1

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

我正在尝试使用这样的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]);
}
4

1 回答 1

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]);
    }
}

事情应该会奏效。

于 2012-07-01T16:24:59.353 回答