【发布时间】:2017-10-30 08:38:14
【问题描述】:
我已经有一个脚本,用简单的 HTML dom 废弃一个 csv 的所有 url。
输出是这样的:
CoolerMaster Devastator II Azul
Coolbox DeepTeam - Combo teclado, ratón y alfombrilla
Asus Claymore RED - Teclado gaming
INSERT INTO productos (nombre) VALUES('Asus Claymore RED - Teclado gaming')
Items added to the database!
INSERT INTO productos (nombre) VALUES('Asus Claymore RED - Teclado gaming')
Items added to the database!
INSERT INTO productos (nombre) VALUES('Asus Claymore RED - Teclado gaming')
Items added to the database!
如您所见,废料是 3 个不同的产品,但是当我尝试插入 MySQL 数据库时,它只保存最后一个产品,但保存了 3 次。
在这里你可以看到我的 PHP 代码:
<?php
require 'libs/simple_html_dom/simple_html_dom.php';
set_time_limit(0);
function scrapUrl($url)
{
$html = new simple_html_dom();
$html->load_file($url);
global $name;
$names = $html->find('h1');
foreach ($names as $name) {
echo $name->innertext;
echo '<br>';
}
$rutaCSV = 'csv/urls1.csv'; // Ruta del csv.
$csv = array_map('str_getcsv', file($rutaCSV));
foreach ($csv as $linea) {
$url = $linea[0];
scrapUrl($url);
}
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
foreach ($csv as $linea) {
$url = $linea[0];
$sql = "INSERT INTO productos (nombre) VALUES('$name->plaintext')";
print ("<p> $sql </p>");
if ($conn->query($sql) === TRUE) {
echo "Items added to the database!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
所以,我需要的是 MySQL 查询添加:
INSERT INTO productos (nombre) VALUES('CoolerMaster Devastator II Azul')
Items added to the database!
INSERT INTO productos (nombre) VALUES('Coolbox DeepTeam - Combo teclado, ratón y alfombrilla')
Items added to the database!
INSERT INTO productos (nombre) VALUES('Asus Claymore RED - Teclado gaming')
Items added to the database!
非常感谢任何帮助!
谢谢你和最好的问候
【问题讨论】:
-
为什么不使用单个
INSERT语句? -
你好@TimBiegeleisen,对不起,我不明白你的意思......你能再解释一下吗?谢谢!
-
为什么在你的 INSERT 语句中使用 "$name->plaintext",而这个变量 "$name" 甚至没有在你的循环中设置?
-
@MihanEntalpo 因为我不想添加到我的 MySQL 表中的是产品的所有名称。 (每一个MySQL表行)
-
你为什么在 csv 上循环 2x,为什么不合并它。