gpt4 book ai didi

php - 将 JSON 数据插入 MySQL

转载 作者:行者123 更新时间:2023-11-29 10:11:16 27 4
gpt4 key购买 nike

我有一个解决方案,PHP作为服务器端,Vue JS作为前端,MySQL作为数据库。

UI 将数据捆绑为 JSON 并通过 axios 将其发布到 PHP,而 PHP 又将解码 JSON 并插入到 MySQL 中。

这是我的 PHP 代码(省略其他行,如连接等):

$data = file_get_contents("php://input"); 
$jsonData = json_decode($data, true);

//echo var_dump($jsonData);
// Below is the jsonData as dumped
//[{"candidate_id":"SM_009","FirstName":"test","LastName":"dummy","DOB":"1990-06-05"}]

$tableName = 'profile';
foreach((array)$jsonData as $id=>$row) {

$insertPairs = array();
foreach ((array)$row as $key=>$val) {
$insertPairs[addslashes($key)] = addslashes($val);
}
$insertKeys = '`' . implode('`,`', array_keys($insertPairs)) . '`';
$insertVals = '"' . implode('","', array_values($insertPairs)) . '"';
$sql = "INSERT INTO `{$tableName}` ({$insertKeys}) VALUES ({$insertVals});" ;
//echo var_dump($sql);
$stmt = $con->prepare($sql);
$stmt->execute();
}

但是,这里是实际生成的插入语句,这显然是错误的。

INSERT INTO `profile` (`0`) VALUES ("[{\"candidate_id\":\"SM_009\",\"FirstName\":\"test\",\"LastName\":\"dummy\",\"DOB\":\"1990-06-05\"}]");

我哪里做错了?任何帮助将不胜感激..

谢谢

注意:当我使用相同的转储 jsondata 作为硬编码字符串时,它可以工作。

$data ='[{"candidate_id":"SM_009","FirstName":"test","LastName":"dummy","DOB":"1990-06-12"}]';
//$data = file_get_contents("php://input");

...

生成的语句:

 "INSERT INTO `profile` (`candidate_id`,`FirstName`,`LastName`,`DOB`) VALUES ("SM_009","test","dummy","1990-06-12");"

最佳答案

您仍然在插入语句中收到 json 的原因是因为您解码了 json 字符串的第一部分并收到了数据数组,其中仍然包含 json 字符串。要解决此问题,只需再次解码 $jsonData 变量,如下所示:

<?php 
$data = file_get_contents("php://input");
$jsonData = json_decode($data, true);
$jsonData = json_decode($jsonData['data'], true); //Decode the data as well

$tableName = 'profile';
foreach((array)$jsonData as $id => $row){
$insertPairs = array();
foreach ((array)$row as $key=>$val) {
$insertPairs[addslashes($key)] = addslashes($val);
}
$insertKeys = '`' . implode('`,`', array_keys($insertPairs)) . '`';
$insertVals = '"' . implode('","', array_values($insertPairs)) . '"';
$sql = "INSERT INTO `{$tableName}` ({$insertKeys}) VALUES ({$insertVals});" ;
$stmt = $con->prepare($sql);
$stmt->execute();
}

您可以在此处查看一个工作示例:https://ideone.com/i86iVP

关于php - 将 JSON 数据插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com