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){

2 番目の編集: このコードを使用して、出力内容をお知らせください:

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

最終編集:

さて、問題は、受信した投稿変数が配列として読み取られているため、それらを直接呼び出すことができないことです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 に答える