Доступ к глобальным переменным внутри функций в PHP - PullRequest
0 голосов
/ 19 мая 2010

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

<?php 
$page_title = 'Dashboard';
include('templates/header.inc'); // includes a 'require_once('mysqli_connect.php') and a small query to the database;
require_once('includes/functions.php');
require_once('includes/dashboard_sql.php'); // Contains functions which connect to database (which are failing.)
?>

Я получаю ошибку PHP

Примечание: неопределенная переменная: dbc в /Library/WebServer/Documents/pediatory_site/includes/dashboard_sql.php

Где $ dbc - соединение с базой данных, определенное в mysqli_connect.php.

Если бы кто-нибудь мог мне помочь, это было бы здорово.

Ответы [ 2 ]

1 голос
/ 19 мая 2010

Вероятно, это связано с scope .

$dbc = 1;

function foo() {
   echo $dbc; // Undefined variable
   echo $GLOBALS['dbc']; // 1, like defined above
   $otherVar = 2;
}

echo $otherVar; // Undefined variable

Если переменная $ dbc используется несколько раз, ее длина будет меньше:

function foo() {
   global $dbc;
   echo $dbc; // 1, like defined above
}
0 голосов
/ 19 мая 2010

Я думаю, что при использовании метода Require_Once для создания соединения с БД переменная очищается после того, как метод закрывает соединение с файлом. Попробуйте потребовать или включить для этого вида операций, и проверьте, работает ли это

<?php 
$page_title = 'Dashboard';
include('templates/header.inc'); // includes a 'require_once('mysqli_connect.php') and a small query to the database;
require_once('includes/functions.php');
include('includes/dashboard_sql.php'); // Contains functions which connect to database (which are failing.)
?>

Итак, я изменил require_once на метод include в коде, который вы разместили, попробуйте перейти к шаблону / header.inc и измените метод require_once на include и проверьте, помогает ли это.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...