【发布时间】:2012-05-07 12:53:30
【问题描述】:
我正在尝试对我的数据库应用程序(针对一个类)进行一些安全性和清理工作。首先,我尝试使用 mysql_real_escape_string,但每当我使用它时,它总是返回一个空字符串!
这是连接代码:
include_once ("./connect.php");
$db_connection = new mysqli($SERVER, $USERNAME, $PASSWORD, $DATABASE);
if (mysqli_connect_errno()) {
echo("Can't connect to MySQL Server. Error code: " . mysqli_connect_error());
return null;
}
$field = mysql_real_escape_string($_GET['value']);
$upc = $_GET['upc'];
$type = $_GET['field_type'];
echo $field;
echo $upc;
echo $type;
当 php 实际执行时,会打印 $upc 和 $type,但 $field 没有任何内容。我试过使用中间字符串,但我得到了相同的结果。我真的不知道这里出了什么问题。
另外,我在$field 上做了一个var_dump,它声称mysql_real_escape_string 返回FALSE,这应该在没有连接时发生(?),但有一个。
【问题讨论】:
-
您确定有活动连接吗?你是怎么测试的?另外,如果您还没有开启错误报告功能。
-
你怎么知道有连接?我还建议完全避免使用
mysql_*并使用PDO,或者至少使用一些 DB 包装器,如MDB2 -
我知道我已连接到数据库,因为未显示 php。无需任何文本清理,我就可以编辑数据库中的项目。 (这就是在这种情况下需要做的事情,但我正在寻找一般的输入清理)并且,是的,我知道未清理的值已填充。
-
请在一开始就这样做:
error_reporting(~0); ini_set('display_errors', 1);- 然后注意不要再看到任何警告和通知。如果您仍有问题,请告诉我们。 -
我把这两行放在 php 元素的最开始,没有任何改变。没有错误。
标签: php mysql database mysql-real-escape-string