0
我已經在下面寫了從網頁中提取數據,但這是連續運行的,無需將數據插入表中。我如何在下面的代碼中分割這個分支。在循環期間數據不會進入數據庫
我想立即爲每個url插入並在循環中提交。這是行不通的:
<?php
// example of how to use basic selector to retrieve HTML contents
ini_set('log_errors','0');
ini_set('display_errors','1');
error_reporting(2047);
include('simple_html_dom.php');
include('parameters.php');
// get DOM from URL or file
set_time_limit(0);
$site_name="sitename";
mysql_connect($hostname, $user, $pass) or
die("Could not connect: " . mysql_error());
mysql_select_db($database);
$query="select site_name,category,subcategory,link,first_no,last_no
from `search_links` where site_name='".$site_name."'";
echo $query;
$res=mysql_query($query);
while ($row = mysql_fetch_assoc($res))
{
$links[]=array(
"site_name"=>$row["site_name"],
"category"=>$row["category"],
"subcategory"=>$row["subcategory"],
"url"=>$row["link"],
"first_no"=>$row["first_no"],
"last_no"=>$row["last_no"]);
}
foreach ($links as $link)
{
for ($i=$link["first_no"];$i<$link["last_no"];$i++)
{
try
{
$html = file_get_html($link["url"].$i);
$sql = array();
foreach($html->find('a') as $e)
{
$sql[] = "('".$e->href."',
'".$site_name."',
'".$link["category"]."',
'".$link["subcategory"]."','N')";
}
#var_dump($sql);
mysql_connect($hostname, $user, $pass) or
die("Could not connect: " . mysql_error());
mysql_select_db($database);
$sql_ext=" ON DUPLICATE KEY update duplicate='Y'";
/*//echo('INSERT INTO table (link,site,category,subcategory, archived)
VALUES '.implode(',', $sql));*/
mysql_query(
'INSERT INTO classifieds (link,site,category,subcategory, archived)
VALUES '.implode(',', $sql).$sql_ext);
mysql_query("COMMIT");
}
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
}
}
?>
什麼是你的錯誤消息。 – 2012-01-16 07:20:35
你能否改善你的代碼格式?很難看到什麼屬於什麼與那搞砸縮進。另外,可能只將代碼切割到相關部分? – deceze 2012-01-16 07:23:26
code&query look ok,'COMMIT'是不必要的(因爲你沒有'BEGIN'任何事務),mysql_query('INSERT ...')'的結果是什麼?模式是什麼? – ori 2012-01-16 10:22:08