PHP mysqli ошибка подключения в функции - PullRequest
0 голосов
/ 09 октября 2011

У меня проблемы с использованием mysqli_query внутри функции, ошибка: Warning: mysqli_query() expects parameter 1 to be mysqli, null given. Если я var_dump($dbc) вне функции, я получаю ожидаемый результат, но когда я использую его внутри функции, я получаю NULL возвращенное значение.

Вот мой скрипт подключения

define('DB_HOST', 'localhost');
define('DB_DBNAME', 'db');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DBNAME)or die(mysqli_error($dbc));

Вот моя функция

function memInfo($var1, $var2){
    var_dump($dbc);
    $query = mysqli_query($dbc, "SELECT * FROM `members` WHERE id = '".$var1."'")or die(mysqli_error($dbc));
    $rowCount = mysqli_num_rows($query);

    if($rowCount > 0){
        $fetch = mysqli_fetch_array($query);
        return $fetch[$var2];
    }else{
        return "Invalid member";    
    }
}

Спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Ваша переменная $ dbc внутри функции memInfo рассматривается как переменная «область действия функции». Если вам нужно использовать глобальный экземпляр (ранее определенный $ dbc = mysqli_ blah blah ...), вам нужно объявить «глобальную область видимости» внутри вашей функции. Как это:

function memInfo($var1, $var2){
    global $dbc;
    var_dump($dbc);
    $query = mysqli_query($dbc, "SELECT * FROM `members` WHERE id = '".$var1."'")or die(mysqli_error($dbc));
    $rowCount = mysqli_num_rows($query);

    if($rowCount > 0){
        $fetch = mysqli_fetch_array($query);
        return $fetch[$var2];
    }else{
        return "Invalid member";    
    }
}

Больше на эту тему в руководстве по PHP:

http://php.net/language.variables.scope.php

0 голосов
/ 09 октября 2011

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

function memInfo() {
    global $dbc;
}

В качестве альтернативы, вы можете передать переменную в качестве параметра функции.

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