我有一个如下所示的数组:
$object = array(filed1=>newvalue1,field2=>newvalue2,field3=>newvalue3);
我需要用mysql_real_escape_string检查它并将其传递给mysql
foreach ($object as $key => $value)
{
$key = mysql_real_escape_string($key . '');
$value = mysql_real_escape_string($value . '');
$object[$key] = $value;
}
最后它返回以下数组:
array(4) {
["filed1"]=> string(9) "newvalue1"
["field2"]=> string(9) "newvalue2"
["field3"]=> string(9) "newvalue3"
[0]=> bool(false)
}
最后[0] =>的方式和原因布尔(假)出现了吗?我该如何删除它?
P.S。请,没有“使用PDO”建议......这是我的家庭任务,PDO不是一个选项。谢谢。
答案 0 :(得分:4)
这里有两个问题。
首先,mysql_real_escape_string
需要连接。如果你还没有创建一个,它会尝试通过调用没有参数的mysql_connect
来创建它,如果后者失败,它将返回一个布尔值为FALSE。
其次,虽然您的意图似乎是更新原始$object
密钥,但实际上您正在更新mysql_real_escape_string
返回的密钥。
$key = mysql_real_escape_string($key . '');
// This sets $key to FALSE
$value = mysql_real_escape_string($value . '');
// This sets $value to FALSE
$object[$key] = $value;
// $object[FALSE] = FALSE;
最后一个语句在第一次运行时添加了额外的条目,并在下次运行时更新它(具有相同的值)。