为什么我从文件 mysqli/mysqli_driver.php 中收到错误消息?

why am i getting an error from file mysqli/mysqli_driver.php?

我刚刚将我的项目上传到我的网站服务器,当我点击我的登录表单提交按钮时收到此错误消息。

A PHP Error was encountered
Severity: Warning

Message: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given

Filename: mysqli/mysqli_driver.php

Line Number: 315

我的本地服务器上绝对没有错误,我完全不知道问题出在哪里。如果有人可以提供帮助,我将不胜感激并给予尊重。

我的项目正在使用 codeigniters 框架。

mysqli_real_escape_string() is used to prepare text data too be save in an SQL Record Column.<br>And the data being wrint to that column does not exist.<br><br>

转到 mysqli_driver.php 到第 315 行并在命令前面放置一个 at 标记以抑制警告。

发件人:

 mysqli_real_escape_string() 

收件人:

 @mysqli_real_escape_string() 

如果您要转义的值是整数,则改用 intval():
这会将 NULL 变成 Zero

$var = intval($var);

不要用@隐藏警告,检查conn_id是否为假:

改变

 $str = mysqli_real_escape_string($this->conn_id, $str);

那样

if($this->conn_id){
    $str = mysqli_real_escape_string($this->conn_id, $str);
}

我的解决方案是在连接不可用时初始化连接。 更改第 315 行:

if ($this->conn_id === FALSE)
{
    $this->initialize();
}
$str = mysqli_real_escape_string($this->conn_id, $str); 

我也遇到了这个问题。 Wolfgang 的解决方案对我来说效果很好。

如果您使用 codeIgniter,请更改数据库配置 $db['default']['autoinit'] = TRUE; 也能解决问题