Php 为什么mysql\u real\u escape\u字符串返回布尔值?
我已经编写了一个PHP脚本来处理用户登录。为了防止SQL注入攻击,我使用了“mysql\u real\u escape\u string”函数。直到今天一切都很顺利。我跟踪代码并发现问题;使用“mysql\u real\u escape\u string”的行。我已将其更改为基本命令,如下所示: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
$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。相反,您应该与或一起使用。谢谢。这就是我问题的解决办法:)