繁体   English   中英

将JSON中的值插入数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM