我有一个页面上的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组成一个记录等)。我可以在这个数组中有多达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));
我关门了吗?我很困惑。提前谢谢。
答案 0 :(得分:1)
首先,为您发布的数据命名:
$.ajax({
type: "POST",
dataType: "json",
data: {
my_data: answersArray
},
url: 'sendToUsersFeedback.php',
});
然后,在您的PHP代码中,恢复您的数据:
$data = $_POST['my_data'];
$sql = json_decode($data, true);
...
您应该知道每个人都可以在客户端编辑JSON,因此以这种方式将数据插入数据库是非常危险的。
答案 1 :(得分:0)
你在做:
$sql = json_decode(data,true);
什么是data
?你可能错过了美元符号。你真的在$data
获得了JSON吗?
您将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']
答案 2 :(得分:0)
很简单,你可以使用来自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));
希望这会对你有所帮助。