0

テーブルにデータを挿入するときに重複を正常に防ぐために、以下のコードを取得できません。

<?php
   include('simple_html_dom.php');  
    // Create DOM from URL
   $html = file_get_html('http://thesite.com/example/');

   // Find all article blocks

   $con = mysql_connect("localhost","admin","password");
    mysql_select_db("dataminer", $con);
   if (!$con)
    {
  die(mysql_error());
    }else {
   foreach($html->find('li.search-result') as $sitelisting){
 $escapedlisting = mysql_real_escape_string($sitelisting);
 $debugquery = mysql_query("INSERT IGNORE INTO extract (listing) VALUES ('$escapedlisting')");
    if (!$debugquery)
   {
   die(mysql_error());
  }
 }
 }
 mysql_close($con);
?>

INSERT IGNORE にもかかわらず、スクリプトが実行されるたびにすべてのエントリが複製されます。

編集:変更してこれを修正しました:

foreach($html->find('li.search-result') as $sitelisting){
     $escapedlisting = mysql_real_escape_string($sitelisting);
     $debugquery = mysql_query("INSERT IGNORE INTO extract (listing) VALUES ('$escapedlisting')");

に:

foreach($html->find('li.search-result') as $sitelisting){
    $item['address'] = mysql_real_escape_string($sitelisting->find('div.adr-flag', 0)->plaintext);
    $item['desc'] = mysql_real_escape_string($sitelisting->find('ul.attributes', 0)->plaintext);

    $debugquery = mysql_query("INSERT IGNORE INTO extract VALUES ('$item[address]', '$item[desc]')");
4

0 に答える 0