2

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

$username=mysql_real_escape_string('sample');
var_dump($username)

输出是:

bool(false)

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

4

2 回答 2

10

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

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

出错时返回 false;

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

error_reporting(E_ALL);

所以你可以查看错误。

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

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

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

于 2013-11-10T11:03:06.630 回答
3

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

文档

我不能告诉你错误到底是什么,但几乎可以肯定是这样的:

笔记:

使用前需要 MySQL 连接,否则会产生mysql_real_escape_string()level 错误并返回。如果未定义,则使用最后一个 MySQL 连接。E_WARNINGFALSElink_identifier

于 2013-11-10T11:03:28.313 回答