テーブルにデータを挿入するときに重複を正常に防ぐために、以下のコードを取得できません。
<?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]')");