mysql_real_escape_string不适用于后PHP

时间:2012-07-01 16:22:21

标签: php mysql post

也许我错了,但对我来说它不起作用,

我正在尝试使用mysql_real_escape_string()这样的$_POST['value'];功能,

mysql_real_escape_string($_POST['value']);

但它没有用,但如果我试试这个,

$value = $_POST['value'];
mysql_real_escape_string($value);

它完美无缺,有什么建议吗?

编辑:

我的代码是这样的,

$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
}

1 个答案:

答案 0 :(得分:6)

您是否将mysql_real_escape_string()的结果分配给任何内容?它不会就地修改变量。

$value = mysql_real_escape_string($_POST['value']);

要回复您的修改,您的foreach不应该循环$post,而不是$postArray吗?

foreach($postArray as $pa){

应该是......

foreach($post as $pa){

第二次修改:请使用此代码告诉我们输出的内容:

var_dump($_POST);
$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
}
var_dump($postArray);

最终修改:

好的,你的问题是你的传入的post变量被读作数组,因此你不能直接在那些上调用mysql_real_escape_string()(因为它是为字符串设计的,而不是数组)。

将您的代码更改为:

$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    if(is_array($_POST[$pa])) {
        $postArray[$pa] = mysql_real_escape_string($_POST[$pa][0]);
    } else {
        $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
    }
}
事情应该有效。