2015-04-29 1 views
0

Я искал стек, чтобы получить ответ, но ничего не исправила мою проблему. Итак, вот мой снимок:PHP: не могу использовать глобальную переменную в функции для подключения mysqli

$conn = mysqli_connect('localhost', 'username', 'pass', 'db'); 
function GetArticle() { 
    global $conn; 
    $sql = "sql query"; 
    $getresult = mysqli_query($conn, $sql); 
    .. 
} 

Это не работает. Если я положил $ conn внутри функции, он отлично работает.

Любые идеи?

+1

Как вы узнали, что присвоение '$ conn =' действительно находится в глобальной области? – mario

+0

Да, если вы поместите это как есть в файл, он должен работать. – AbraCadaver

+0

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

ответ

2

Я не знаю вашу точную ситуацию, но в целом я не вижу преимущества использования $conn как глобального. Для работы ваша функция зависит от соединения mysqli, поэтому просто подключите параметр функции.

function GetArticle($conn) { 
    $sql = "sql query"; 
    $getresult = mysqli_query($conn, $sql); 
    .. 
} 

После того, как вы установили соединение, вы можете вызвать функцию с вашим объектом соединения в качестве аргумента.

$conn = mysqli_connect('localhost', 'username', 'pass', 'db'); 
$article = GetArticle($conn); 

Я думаю, что это более управляемо подход, чем пытаться отслеживать ли $conn доступен в глобальном масштабе перед вызовом функции.

+0

это то, что у меня есть все мои функции в одном файле php. , но в любом случае я исправил его, используя mysql вместо mysqli – Schteven

+1

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

Смежные вопросы