将JSON数组插入MySQL数据库无法正确循环

时间:2018-10-24 14:00:08

标签: php mysql json mysqli

我正在尝试将JSON文件中的某些数据插入SQL数据库。

我已经编写了此脚本来读取JSON,对其进行解码并将其插入,但是由于我认为循环不正确,我只能得到第一行JSON。

我也收到一个重复的错误,我认为这是由于代码尝试循环同一行而不是JSON中的下一行所引起的! (仅插入第一个JSON项)

如何获取脚本以循环JSON中的每一行并将其插入?

谢谢!

我正在使用的代码:

<?php
error_reporting(E_ALL);
$root = $_SERVER['DOCUMENT_ROOT'];
require ($root."/config.php");

$json = file_get_contents('propertiesA.json');
$obj = json_decode($json,true);

foreach($obj as $item) {
    $query =  "INSERT INTO unverified_list (
         title,
         street_address,
         locality
       ) VALUES (
         '".$item['title']."',
         '".$item['street_address']."',
         '".$item['locality']."'

       )"; 
}

$result = $link->query($query);

if ($link->query($query) === TRUE) {
    echo "Property Added";
} else  {
  echo "Error: " . $query . "<br>" . $link->error;
}

mysqli_close($link);

?>

1 个答案:

答案 0 :(得分:5)

问题是您仅在循环完成后才执行查询,您需要在每一行上运行它...

foreach($obj as $item) {
       $query =  "INSERT INTO unverified_list (
         title,
         street_address,
         locality
       ) VALUES (
         '".$item['title']."',
         '".$item['street_address']."',
         '".$item['locality']."'

       )"; // Remove } from here to after next bit of code

       $result = $link->query($query);

       if ($link->query($query) === TRUE) {
           echo "Property Added";
       } else  {
           echo "Error: " . $query . "<br>" . $link->error;
       }
}

尽管这会为您插入的每一行显示一条消息。

您还应该考虑使用prepared statements,它将保护您免受各种潜在问题的侵害。