因此,目前,我使用的代码仅输入数据集中最后一个Feed的数据,即数据库中的feed4
,并且不会添加其他3个Feed中的数据,我该如何解决这个问题,这是代码:
<?php
$db_hostname="";
$db_username="";
$db_password="";
$all_urls = array('feed1', 'feed2', 'feed3', 'feed4');
try
{
$db = mysql_connect($db_hostname,$db_username,$db_password);
if (!$db)
{
die("Could not connect: " . mysql_error());
}
mysql_select_db("dbname", $db);
foreach ($all_urls as $url) {
libxml_use_internal_errors(true);
$RSS_DOC = simpleXML_load_file($url);
}
if (!$RSS_DOC) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
$rss_title = $RSS_DOC->channel->title;
$rss_link = $RSS_DOC->channel->link;
$rss_editor = $RSS_DOC->channel->managingEditor;
$rss_copyright = $RSS_DOC->channel->copyright;
$rss_date = $RSS_DOC->channel->pubDate;
$rss_author = $RSS_DOC->channel->author;
foreach($RSS_DOC->channel->item as $RSSitem)
{
$item_id = md5($RSSitem->title);
$fetch_date = date("Y-m-j G:i:s");
$item_title = $RSSitem->title;
$item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate));
$item_time = date("H:i:s", strtotime($RSSitem->pubDate));
$item_url = $RSSitem->link;
$item_author = $RSSitem->author;
$item_exists_sql = "SELECT item_id FROM tablename where item_id = '" . $item_id . "'";
$item_exists = mysql_query($item_exists_sql, $db);
if(mysql_num_rows($item_exists)<1)
{
$item_insert_sql = "INSERT INTO tablename(item_id, feed_url, item_title, item_date, item_time, item_url, item_author, fetch_date) VALUES ('" . $item_id . "', '" . $url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_time . "', '" . $item_url . "', '" . $item_author . "', '" . $fetch_date . "')";
$insert_item = mysql_query($item_insert_sql, $db);
echo "Inserted into Databse Successfully";
}
else
{
}
}
} catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
PS:我知道不推荐使用mysql_ *,我的生产代码将使用mysqli。
答案 0 :(得分:0)
我想你想为$all_url
的每个网址运行脚本的漏洞循环。目前,您在$all_url
之后完成$RSS_DOC=...
的循环。这就是为什么$RSS_DOC
包含&#39; feed4&#39;,最后一个网址,只有那个。
然后将闭合支撑移动到末端,就在阻挡块之前。
(不要混淆libxml_get_errors()
包含所有网址的消息,因为它在foreach
循环中得到了很好的填充。)