mysqli->real_escape_string

#php #mysqli

#php #mysqli

Вопрос:

У меня проблема с real_escape_string

код:

 function mysql_escape($str){
    echo '<pre>';
    var_dump(self::$link);
    echo '</pre>';

    return self::$link->real_escape_string($str);
}
  

вывод:

 object(mysqli)#1 (17) {
  ["affected_rows"]=>
  NULL
  ["client_info"]=>
  NULL
  ["client_version"]=>
  int(50051)
  ["connect_errno"]=>
  int(0)
  ["connect_error"]=>
  NULL
  ["errno"]=>
  NULL
  ["error"]=>
  NULL
  ["field_count"]=>
  NULL
  ["host_info"]=>
  NULL
  ["info"]=>
  NULL
  ["insert_id"]=>
  NULL
  ["server_info"]=>
  NULL
  ["server_version"]=>
  NULL
  ["sqlstate"]=>
  NULL
  ["protocol_version"]=>
  NULL
  ["thread_id"]=>
  NULL
  ["warning_count"]=>
  NULL
}



Warning:  mysqli::real_escape_string() [mysqli.real-escape-string]: Couldn't fetch mysqli in /usr/www/users/.../class/class.Data.php on line 188
  

Комментарии:

1. Не удалось загрузить mysqli … в чем ?

2. правильно ли открыто соединение? Я предполагаю, что у вас есть что-то вроде self::$link = new mysqli(...); . Если он не может подключиться, он возвращает не false , а объект, поэтому в любом случае if (self::$link) всегда будет оцениваться как true. Попробуйте mysqli_connect_error() или self::$link->connect_error() (в зависимости от вашей версии php), как указано в mysli::__construct

3. @carlos это, вероятно, должно быть ответом 🙂

4. проверьте мой вопрос еще раз .. обновить

5. выполняйте var_dump(self::$link->connect_error); .

Ответ №1:

Правильно ли открыто соединение? Я предполагаю, что у вас есть что-то вроде

 self::$link = new mysqli(...);
  

Если он не может подключиться, он возвращает не false , а объект, так что в любом случае ваше условие всегда оценивается как true :

 if (self::$link)
{
     echo "I'm always here!"
}
  

Попробуйте mysqli_connect_error() или self::$link->connect_error() (в зависимости от вашей версии php), как указано в mysqli::__construct