mysql_real_eescape只是将文本设为空白


mysql_real_escape simply making text blank

我正在编写一个PHP MySQL接口——然而,当我尝试使用MySQL_real_eescape对字符串进行转义时,它们会被清除为空白!

假设我们在url 中有一个PHP文件

http://web/file.php

该文件的内容为:

echo $_GET["action"];
echo  mysql_real_escape_string($_GET["action"]);

现在,假设我们加载url:

http://web/file.php?action=asdfqwerty

第一个回波将输出"asdfqwerty"。

然而,第二个根本不输出!我不知道为什么…有人能帮忙吗?谢谢!

如本文所述,mysql_real_escape_string需要一个开放的数据库连接。如果不存在,则会发生错误。您似乎已经将PHP配置为不输出错误,所以您看不到这一点。您可以使用更高的错误级别进行验证:

<?php
error_reporting(E_ALL);
echo $_GET["action"];
echo  mysql_real_escape_string($_GET["action"]);

或者通过调整php.ini.

mysql_real_eescape_string需要一个已建立的mysql连接。您可能没有并且隐藏了E_WARNING类型的错误。

php > echo mysql_real_escape_string('asd');
PHP Warning:  mysql_real_escape_string(): Access denied for user 'timwolla'@'localhost' (using password: NO) in php shell code on line 1
PHP Warning:  mysql_real_escape_string(): A link to the server could not be established in php shell code on line 1

您要么需要一个开放的mysql连接,要么需要mysql打开连接的能力。请参阅link_identifier 下的mysql_real_eescape_string文档

根据PHP文档,mysql_real_escape_string用于二进制数据,而mysql_ escape_ string用于常规字符串值。

如果这也不起作用,那就意味着你没有建立到MySQL服务器的任何连接。

您以前建立过有效的mysql连接吗?

如果未指定链接标识符,则假定为mysql_connect()打开的最后一个链接。如果找不到这样的链接,它将尝试创建一个链接,就像调用mysql_connect()时没有参数一样。如果未找到或未建立连接,则会生成E_WARNING级别的错误。

试着把$_GET放在一个变量中,比如:

$action = $_GET['action'];
echo $action;
echo mysql_real_escape_string($action);

它在我的本地服务器上运行得很好。。。