0

我有一个页面上的 JSON 数组。随着时间的推移,它会通过一些用户交互来添加。当用户完成后,他们需要将此数组提交到一个页面,在该页面中,他们的信息通过 php.ini 添加到 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 构成一个记录等)。这个数组中可以有多达 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

你正在做:

$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上面将是您的 JSON,作为 PHP 数组,类似于:

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 回答
0

很简单,你有 foreach 使用它来自 json 代码的 $data 数组。

您必须将解码后的数组设置为另一个变量并循环使用它。

$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 回答