我正在编写一个小小的PHP-MySQL接口 - 但是,当我尝试使用mysql_real_escape转义字符串时,它们会被擦掉空白!
假设我们在网址上有一个PHP文件
http://web/file.php
此文件的内容为:
echo $_GET["action"];
echo mysql_real_escape_string($_GET["action"]);
现在,假设我们加载网址:
http://web/file.php?action=asdfqwerty
FIRST回声将输出“asdfqwerty”。
但是,第二个输出什么都没有!我不知道为什么会这样......有人可以帮忙吗?三江源!
答案 0 :(得分:3)
如记录here所述,mysql_real_escape_string
需要一个开放的数据库连接。如果不存在,则发生错误。您似乎已将PHP配置为不输出错误,因此您无法看到此错误。您可以使用更高的错误级别来验证它:
<?php
error_reporting(E_ALL);
echo $_GET["action"];
echo mysql_real_escape_string($_GET["action"]);
或者通过调整 php.ini 。
答案 1 :(得分:3)
mysql_real_escape_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
答案 2 :(得分:1)
您需要一个开放的mysql连接或mysql打开连接的能力。请参阅link_identifier
下的mysql_real_escape_string文档答案 3 :(得分:0)
根据PHP文档,mysql_real_escape_string
用于二进制数据,而mysql_ escape_ string
用于常规字符串值。
如果这也不起作用,则意味着您没有与MySQL服务器建立任何连接。
答案 4 :(得分:0)
您之前是否建立了有效的mysql连接?
如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误。
答案 5 :(得分:-2)
尝试将$ _GET放在一个变量中:
$action = $_GET['action'];
echo $action;
echo mysql_real_escape_string($action);
它在我的本地服务器上运行良好......