将JSON数组插入MySQL数据库不能正确循环

tbo*_*den 0 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);

?>
Run Code Online (Sandbox Code Playgroud)

Nig*_*Ren 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;
       }
}
Run Code Online (Sandbox Code Playgroud)

虽然现在这将为您插入的每一行提供一条消息.

您还应该考虑使用准备好的语句来保护您免受各种潜在问题的影响.