2017-01-04 6 views
2

Я пытаюсь включить переменную типа global в php, но что-то не работает.Включая переменную внутри переменной Gloobal php

Пытался, но не работает:

$row = fetch_row("SELECT id,name FROM $GLOBALS['var'] where id = $id"); 
or 
$row = fetch_row("SELECT id,name FROM `$GLOBALS['var']` where id = $id"); 
or 
$row = fetch_row("SELECT id,name FROM '$GLOBALS['var']' where id = $id"); 
or 
$row = fetch_row("SELECT id,name FROM $GLOBALS[\"var\"] where id = $id"); 

ответ

5

Как вы используете " " вы можете использовать переменные внутри строки, однако, потому что вы пытаетесь получить доступ к значению массива это вызовет ошибку.

Что вы можете сделать в этой ситуации, либо объединить строку, либо обернуть переменную в { }.

Так что:

"SELECT id,name FROM " . $GLOBALS['var']. " where id = $id" 

или

"SELECT id,name FROM {$GLOBALS['var']} where id = $id" 

Кроме того, вы на самом деле не внутри функции в этой точке, вы просто проездом эту строку к нему.

Надеюсь, это поможет!

0

Это не сработает, вы должны объявить, какую глобальную переменную вы хотите получить с ключевым словом global. и строковый формат переменной.

global $var; 

после Признаться можно использовать следующий запрос:

fetch_row("SELECT id,name FROM {$GLOBALS['var']} where id = $id"); 

PHP Manual Link for Global variable

Для переменной сферы вы можете увидеть это Link.

+0

'$ GLOBALS ['var']' отлично. – AbraCadaver

+0

вы не объявляете переменную как глобальную в вопросе, поэтому я дал основание для объявления. да строковый формат переменных работает. – Deep

2

Как указано в документации variable scope in PhP, переменные внутри сценария не используются совместно с их функциями.

Вам нужно будет включить их вручную, используя ключевое слово global, за которым следуют переменные, необходимые для обработки внутри функции. Я копировать/вставить пример той же странице документации, потому что совершенно ясно, что это происходит:

<?php 
    $a = 1; 
    $b = 2; 

    function Sum() 
    { 
     global $a, $b; 

     $b = $a + $b; 
    } 

    Sum(); 
    echo $b; 
?> 

Что отзовется:

3 

Функция используется значение $a и $b, которые были установлены вне функции. Если вы не использовали строку global $a, $b;, она выдавала бы ошибку, говоря, что эти переменные не могут быть найдены.

+0

'$ GLOBALS ['var']' отлично. – AbraCadaver