Я пытаюсь вставить некоторые данные из файла 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);
?>
Проблема в том, что вы выполняете запрос только после завершения цикла, вам нужно запускать его в каждой строке...
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;
}
}
Хотя теперь это даст вам сообщение для каждой вставленной строки.
Вам также следует использовать готовые заявления, которые защитят вас от всевозможных потенциальных проблем.
MYSQLI_
илиPDO