проблема в области видимости переменных в PHP - PullRequest
0 голосов
/ 27 августа 2009

Я написал этот код

require('Database.class.php');



     function get_info (){



        $db = new Database($config['server'], $config['user'], $config['pass'], $config['database'], $config['tablePrefix']);
        $db->connect();


        $sql = $db->query('SELECT * FROM ja_cat');
        while ($options = $db->fetch_array($sql)) {

            $cat[].=" ".$options['title'];
        }
        $db->close();
        return $cat;

тогда я получаю эту ошибку Mysql

Mysql Ошибка: база данных не выбрана.

но когда я помещаю инструкцию require внутри функции, она отлично работает

Ответы [ 3 ]

4 голосов
/ 27 августа 2009

Я предполагаю, что Database.class.php создает некоторые переменные, которые, вероятно, имеют глобальную область видимости, на которую он опирается. Если вам требуется это внутри функции, и она работает, это поддерживает эту теорию. Это твой класс? Вы можете изменить это? Вы можете опубликовать это?

Обычно $ config нужен глобальный спецификатор внутри функции.

3 голосов
/ 27 августа 2009

Сделайте это первой строкой IN вашей функцией get_info ():

global $config;

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

2 голосов
/ 27 августа 2009

Вы должны импортировать глобальную переменную $config в область действия функции:

function get_info() {
    global $config;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...