#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::__construct3. @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