簡體   English   中英

如何將每個結果添加到 MySQL 中的表中

[英]How can I add each result to my table in MySQL

我有一個 php 文件(帶有 simple_HTML_Dom),它可以抓取 CSV 文件的所有 URL。

他提取了我需要的所有信息,一切正常,但現在我想將所有這些結果添加到我的 MySQL 表中。

我希望每個結果在 MySQL 表中添加一行。

這是我到目前為止的代碼:

    <?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);


        $names = $html->find('h1');
        $manufacturers = $html->find('h2');
        
        
        foreach ($names as $name) {
           echo $name->innertext;
           echo '<br>';
        }
        foreach ($manufacturers as $manufacturer) {
           echo $manufacturer->innertext;
           echo '<br>';
           echo '<hr><br>';
        }
        

    }

    $rutaCSV = 'csv/urls1.csv'; // Ruta del csv.

    $csv = array_map('str_getcsv', file($rutaCSV));

    //print_r($csv); // Verás que es un array donde cada elemento es array con una de las url.

    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) {


 $sql = "INSERT INTO productos (nombre, nombreFabricante) VALUES($name, $manufacturer)";
 print ("<p> $sql </p>");    
 if ($conn->query($sql) === TRUE) {
    echo "Items added to the database!";
 } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
 }
}

$conn->close();

?>

編輯:我已經更新了代碼。 我還添加了價格變量。 輸出中顯示的錯誤是這樣的:

Notice: Undefined variable: name in C:\xampp\htdocs\bootstrap\csv2.php on line 69

Notice: Undefined variable: manufacturer in C:\xampp\htdocs\bootstrap\csv2.php on line 69

Error: INSERT INTO productos (nombre, nombreFabricante) VALUES(,)
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 'https://url.com/es/product1.html', )' at line 1

如何解決“通知:未定義變量:名稱和價格”的錯誤?

我想將函數內的 $name 和 $manufacturer 變量添加到我的 MySQL 表中

我不確定你在哪里定義 $name 所以你需要檢查它是否有效。

foreach ($csv as $linea) {


 $sql = "INSERT INTO productos (name, manufacturer) VALUES('$name', '{$linea[0]}')";
 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 表中,請嘗試以下操作,但它是一個粗略的根據您的需要制作的。

require 'libs/simple_html_dom/simple_html_dom.php';
set_time_limit(0);



function scrapUrl($url) 
{

   $ar_name =array();
   $ar_man = array();

    $html = new simple_html_dom();

    $html->load_file($url);


    $names = $html->find('h1');
    $manufacturers = $html->find('h2');


    foreach ($names as $name) {
       $ar_name[] = $name->innertext;
    }
    foreach ($manufacturers as $manufacturer) {
       $ar_man[] = $manufacturer->innertext;
    }

    for($i=o;$i<sizeof($ar_name);$i++)
     {


$sql = "INSERT INTO table(name, manufacturer)
VALUES ($ar_name[$i],$ar_man[$i])";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
     }

    //echo $url;

}

$rutaCSV = 'csv/urls1.csv'; // Ruta del csv.

$csv = array_map('str_getcsv', file($rutaCSV));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM