为什么mysql_real_escape_string返回布尔值?

SuB*_*SuB 1 php sql-injection

我写了一个PHP脚本来处理用户登录.为了防止SQL注入攻击,我使用了'mysql_real_escape_string'函数.一切都很好,直到今天.我已经跟踪了代码并发现了问题; 使用'mysql_real_escape_string'的行.我已将其更改为以下基本命令:

$username=mysql_real_escape_string('sample');
var_dump($username)
Run Code Online (Sandbox Code Playgroud)

输出是:

bool(false)
Run Code Online (Sandbox Code Playgroud)

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

Wei*_*Nir 9

根据http://php.net/manual/en/function.mysql-real-escape-string.php

返回转义字符串,如果出错则返回FALSE.

它在错误时返回false;

将以下行添加到文件的头部:

error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)

所以你可以查看错误.

mysql_real_escape_string('sample') 根据http://us1.php.net/mysql-real-escape-string中的第一个错误,在使用函数Thats 之前忘记建立mysql连接是可能的.

在使用mysql_real_escape_string()之前需要MySQL连接,否则会生成级别为E_WARNING的错误,并返回FALSE.

您应该知道有更好的方法来阻止SQL注入,您可以在此处查看: 如何在PHP中阻止SQL注入?