我有一个JSON出现数组,其中包含日期,值和数量,所以:
[["May 09 2014",1.17,63],["May 10 2014",1.01,171],["May 11 2014",1.56,87]]
我需要使用存储过程在MySQL数据库中插入此信息,因此我想知道实现此目的的所有可能方法是什么:
还有另一种方法吗?
答案 0 :(得分:3)
首先,从JSON创建PHP数组:
$jsonString = '[["May 09 2014",1.17,63],["May 10 2014",1.01,171],["May 11 2014",1.56,87]]';
$array = json_decode($jsonString);
现在循环该数组,生成插入并在单行中写入所有内容。 200个条目不是很多循环。
$query = "INSERT INTO `tableName` (`data`, `value`, `quantity`) VALUES ";
$inserts = [];
$params = [];
foreach ($array as $index => $row) {
$inserts[] = "(:data{$index}, :value{$index}, :quantity{$index})";
$params[] = [
":data{$index}" => $row[0],
":value{$index}" => $row[1],
":quantity{$index}" => $row[2],
];
}
$sql = $db->prepare($query.implode(', ', $inserts));
$sql->execute($params);
答案 1 :(得分:1)
你可以循环完成。 json_decode()
它并循环遍历它,插入MySQL。不需要做200个请求,你可以通过将新的和新的部件连接到它来增加一个大的INSERT请求,然后在最后运行一次。像这样:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
代码如下:
$arr = json_decode($arr);
$data = [];
foreach($arr as $a) $data = "('".$a[0]."',".$a[1].",".$a[2].")";
mysqli_query("INSERT INTO tbl_name(a,b,c) VALUES". join(',', $data));
您也可以在文本字段中以普通JSON格式存储它 根据具体情况,这是最好的解决方案
答案 2 :(得分:0)
您可以使用json_decode()
解码json字符串。
$json = '[["May 09 2014",1.17,63],["May 10 2014",1.01,171],["May 11 2014",1.56,87]]';
$occu_array = json_decode($json);
现在您可以迭代此数组并将数据行插入数据库。
迭代可以通过三种方式完成:
答案 3 :(得分:0)
可以使用一个代码行构建SQL而无需迭代:
$sql = 'INSERT INTO table_name (col1, col2, col3) VALUES ' . substr(strtr(trim($json), '[]', '()'), 1, -1);
json字符串必须位于$json
中。请考虑没有数据类型的转换。