0

ページ上にJSON配列があります。これは、ユーザーの操作によって時間が経つにつれて追加されます。ユーザーが完了したら、この配列をページに送信する必要があります。このページでは、phpを介して情報がmySQLテーブルに追加されます。AJAXを介したページへの私の呼び出しは次のとおりです。ここanswersArrayで、は配列です

$.ajax({
    type: "POST",
    dataType: "json",
    data: answersArray,
    url: 'sendToUsersFeedback.php',
});

配列は次のようになります。

[
    {
        "USERID": "3",
        "INDVID": "0",
        "RATING": "1",
        "CONFIDENCE": "8"
    },
    {
        "USERID": "3",
        "INDVID": "1",
        "RATING": "1",
        "CONFIDENCE": "88"
    }
]

これは私が混乱するところです。この着信jsonをデコードしてからループし、配列アイテムごとに新しいレコードを追加する必要があります(USERID、INDVID、RATING、CONFIDENCEが1つのレコードを構成します)。この配列には最大20個含めることができます。USERIDは一意ではないことを知っています。すでにそれを設定しています。

それは私がめちゃくちゃになるphp側です。着信配列をデコードして通過するにはどうすればよいですか。私は以下を試しました

$sql = json_decode(data,true);
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['USERID']).'", '.$row['INDVID'].','.$row['RATING'].','.$row['CONFIDENCE'].')';
}
mysql_query('INSERT INTO users_feedback (USERID, INDVID, RATING. CONFIDENCE) VALUES '.implode(',', $sql));

私は閉じていますか?私はとても混乱しています。前もって感謝します。

4

3 に答える 3

1

まず、投稿するデータに名前を付けます。

$.ajax({
    type: "POST",
    dataType: "json",
    data: {
      my_data: answersArray
    },
    url: 'sendToUsersFeedback.php',
});

次に、PHP コードでデータを回復します。

$data = $_POST['my_data'];
$sql = json_decode($data, true);
...

誰でもクライアント側で JSON を編集できることに注意してください。したがって、この方法でデータベースにデータを挿入することは非常に危険です。

于 2012-09-11T19:34:41.590 に答える
0

シンプルに、json コードからの $data 配列を使用して foreach を作成します。

デコードされた配列を別の変数として設定し、それでループする必要があります。

$j_decoded = json_decode(data,true);

foreach(j_decoded as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['USERID']).'", '.$row['INDVID'].','.$row['RATING'].','.$row['CONFIDENCE'].')';
}
mysql_query('INSERT INTO users_feedback (USERID, INDVID, RATING. CONFIDENCE) VALUES '.implode(',', $sql));

これがお役に立てば幸いです。

于 2012-09-11T19:47:03.730 に答える
0

あなたがやっている:

$sql = json_decode(data,true); 

とはdata? ドル記号を見逃した可能性があります。実際にJSONを取得しています$dataか?

json_decode() の結果を$sql;に割り当てています。これで、$sql変数には との連想配列が含まれます$data$data取得してから値を変更していないため、文字列のままです。

次に、文字列をループして(発生していません)、実行しています:

mysql_query('INSERT INTO users_feedback (USERID, INDVID, RATING. CONFIDENCE) VALUES '.implode(',', $sql));

$sql上記は、次のような PHP 配列としての JSON になります。

array(array('USERID' => 1 ...), array('USERID' => 2 ...)); 

あなたが持っている必要があります:

$data = json_decode($data, true);
$sql = array();
foreach ($data as ...

また、実際に $data を取得していることを確認してください。

$data = $_POST['data']
于 2012-09-11T19:34:37.447 に答える