[英]Insert values from JSON into database
我在页面上有一个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));
我靠近吗? 我很困惑 提前致谢。
首先,为要发布的数据命名:
$.ajax({
type: "POST",
dataType: "json",
data: {
my_data: answersArray
},
url: 'sendToUsersFeedback.php',
});
然后,在您的PHP代码中,恢复数据:
$data = $_POST['my_data'];
$sql = json_decode($data, true);
...
您应该注意,每个人都可以在客户端编辑JSON,因此以这种方式将数据插入数据库非常危险。
您正在执行:
$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']
很简单,您可以使用来自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));
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.