2013-09-29 2 views
-3

Я использую простой html dom для обхода данных с сайта в мою базу данных и отображения на моей веб-странице. Но каждый раз, когда я запускаю файл, дубликаты данных также вставляются в базу данных. Как я могу проверить, имеются ли данные в базе данных или нет? Вот мой файл для ползания:Повторяющиеся данные в базе данных после обхода

<?php 

$con=mysqli_connect("localhost","root","","crawling");\ 

mysql_connect("localhost", "root", "")or die("cannot connect"); 
mysql_select_db("crawling")or die("cannot select DB"); 


include "domcrawl.php"; 
$url="http://www.bgr.in/category/reviews/"; 
$html=file_get_html($url); 
//$arr=$html->find('table[class=findList] tbody tr td[class=result_text]'); 
$m=$html->find('img'); 

$b=$html->find('a'); 

$c=$html->find('p'); 

$imghead = $b[21]->innertext; 

$img = $m[3]; 

$imgtext = $c[0]; 


$sql = sprintf("INSERT INTO image1 
(head, image, text, name) 
VALUES 
('%s', '%s', '%s', '%s')", 

mysql_real_escape_string($imghead), 
mysql_real_escape_string($img), 
mysql_real_escape_string($imgtext), 
mysql_real_escape_string("gm") 
); 
mysql_query($sql); 





$sql = "SELECT head FROM image1 WHERE name='gm'"; 
$sql1 = "SELECT image FROM image1 WHERE name='gm'"; 
$sql2 = "SELECT text FROM image1 WHERE name='gm'"; 
$result = mysql_query("$sql"); 
$result1 = mysql_query("$sql1"); 
$result2 = mysql_query("$sql2"); 

    $head_get= mysql_result($result, 0); 
$img_get= mysql_result($result1, 0); 
$text_get= mysql_result($result2, 0); 
echo "<br><br>"; 

echo $head_get; 
echo "<br><br>"; 
echo $img_get; 
echo $text_get; 


    ?> 
+0

Что ваш код должен делать? что ты уже испробовал? – octern

+2

Поскольку в XML-документе, который вы пытаетесь проанализировать, нет тега с именем 'pubDate'. –

+1

[Этот ответ] (http://stackoverflow.com/a/12769983/2209007) достаточно похож на то, что означает эта ошибка. – Sumurai8

ответ

0

Предполагая 'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue это линия 11, там, кажется, нет ни одного элемента с тегом pubDate, поэтому $node->getElementsByTagName('pubDate')->item(0) возвращается либо null или false.

1

Необходимо проверить перед тем, как свойства объекта, в вашем случае является нахождение пустой объект

$link = $node->getElementsByTagName('link')->item(0); 
if(!empty($link)){ 
$nodeValue = $link->nodeValue, 
} 

'link' => $nodeValue; 

Аналогично сделать для всех

Смежные вопросы