PHP - 尝试通过 for 循环将数据插入数据库,但只填充了一行
PHP - trying to insert data into database through for-loop but only one row is filled
我正在尝试使用 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();
?>
当我 运行 脚本时,它只填充 table 我的一行,其中只有 ID 填充了数字 81(我试图提取的项目数)。当我尝试在没有循环的情况下仅插入一行时,没问题,并且行插入项目正确,所以我猜问题出在我的 for 循环中。
你的问题是你的 $conn->query($sql)
运行s 插入不在你的 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;
}
}
我正在尝试使用 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();
?>
当我 运行 脚本时,它只填充 table 我的一行,其中只有 ID 填充了数字 81(我试图提取的项目数)。当我尝试在没有循环的情况下仅插入一行时,没问题,并且行插入项目正确,所以我猜问题出在我的 for 循环中。
你的问题是你的 $conn->query($sql)
运行s 插入不在你的 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;
}
}