mysql — пытается вставить данные в базу данных через цикл for, но заполняется только одна строка

Я пытаюсь вставить данные в базу данных, используя для цикла. Вот мой код:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "objednavky";

// ******************************************************

include 'simple_html_dom.php';

$html = file_get_html('http://www.quickbistro.cz/cs/rozvoz');
$count = substr_count($html, '<li class="item">');
$jidloA = array();
$cenaA = array();

// ********************************************************

$conn = mysqli_connect($servername, $username, $password, $dbname);

if ($conn->connect_error) {
$message = "Connection failed: " . $conn->connect_error;
} else {
for ($x = 0; $x <= $count; $x++) {
$cenaA[$x] = $html->find("span[class=price]", $x);
$jidloA[$x] = $html->find("div[class=article]", $x);
$jidloSQL = strip_tags($jidloA[$x]);
$cenaSQL = strip_tags($cenaA[$x]);
$id = $x + 1;
$array = array(
"id" => $id,
"popis" => "$jidloSQL",
"cena" => "$cenaSQL");
$sql = "INSERT INTO jidla";
$sql.= " (`" . implode("`, `", array_keys($array)) . "`)";
$sql.= " VALUES ('" . implode("', '", $array) . "') ";
}
}

if ($conn->query($sql) === TRUE) {
echo "Data inserted succesfully";
}
else {
echo "error creating table" . $conn->error;
}

$conn->close();
?>

Когда я запускаю скрипт, он заполняет мою таблицу только одной строкой, где только ID заполняется номером 81 (количество элементов, которые я пытаюсь извлечь). Когда я попытался вставить только одну строку без цикла, все было в порядке, и строка вставила элемент правильно, поэтому я предполагаю, что проблема где-то в моем цикле for.

0

Решение

Ваша проблема в том, что ваш $conn->query($sql) который запускает вставку не внутри вашего for цикл, поэтому он не запускается на каждом цикле, он только запускается после ваш for цикл завершен, и поэтому он только вставляет результаты последнего цикла.

попробуйте сделать это так:

    for($x = 0; $x <= $count; $x++) {
$cenaA[$x] = $html->find("span[class=price]", $x);
$jidloA[$x] = $html->find("div[class=article]", $x);
$jidloSQL = strip_tags($jidloA[$x]);
$cenaSQL = strip_tags($cenaA[$x]);
$id = $x +1;
$array = array(
"id" => $id,
"popis" => "$jidloSQL",
"cena" => "$cenaSQL");

$sql  = "INSERT INTO jidla";
$sql .= " (`".implode("`, `", array_keys($array))."`)";
$sql .= " VALUES ('".implode("', '", $array)."') ";

if($conn->query($sql) === TRUE) {
echo "Data inserted succesfully";
} else {
echo "error creating record" . $conn->error;
}

}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]