Php 为什么mysql\u real\u escape\u字符串返回布尔值?

Php 为什么mysql\u real\u escape\u字符串返回布尔值?,php,sql-injection,Php,Sql Injection,我已经编写了一个PHP脚本来处理用户登录。为了防止SQL注入攻击,我使用了“mysql\u real\u escape\u string”函数。直到今天一切都很顺利。我跟踪代码并发现问题;使用“mysql\u real\u escape\u string”的行。我已将其更改为基本命令,如下所示: $username=mysql_real_escape_string('sample'); var_dump($username) 输出为: bool(false) 在我的本地web服务器(WAMP

我已经编写了一个PHP脚本来处理用户登录。为了防止SQL注入攻击,我使用了“mysql\u real\u escape\u string”函数。直到今天一切都很顺利。我跟踪代码并发现问题;使用“mysql\u real\u escape\u string”的行。我已将其更改为基本命令,如下所示:

$username=mysql_real_escape_string('sample');
var_dump($username)
输出为:

bool(false)
在我的本地web服务器(WAMP)上一切正常,但在远程主机上出现问题!怎么了?(主机PHP是5.4.12)

根据

返回转义字符串,出错时返回FALSE

错误时返回false

将以下行添加到文件头:

error_reporting(E_ALL);
因此,您可以查看错误

在使用函数
mysql\u real\u escape\u string('sample')
这是根据第一个错误

在使用MySQL\u real\u escape\u string()之前需要MySQL连接 否则将生成E_警告级别的错误,并显示FALSE 返回

您应该知道,有更好的方法可以防止sql注入,您可以在此处查看:

返回转义字符串,出错时返回FALSE

我无法告诉您错误的确切原因,但几乎可以肯定的是:

注意:

在使用
MySQL\u real\u escape\u string()
之前需要MySQL连接,否则会生成
E\u警告级别的错误,并返回
FALSE
。如果未定义
link\u标识符
,则使用最后一个MySQL连接


您确定在调用
mysql\u real\u escape\u string()
之前打开了mysql连接吗?请注意
mysql\u real\u escape\u string
不是正确的连接方式。更不用说它已经被弃用了,
mysql.*
函数不再维护,不应该在任何新的代码库中使用。它正逐渐被淘汰,取而代之的是更新的API。相反,您应该与或一起使用。谢谢。这就是我问题的解决办法:)