用php将银行rss提供到我的mysql数据库中?

时间:2012-02-02 14:03:35

标签: php mysql rss

我需要一些帮助才能将银行RSS输入到我的数据库中。我尝试过一些东西,但我似乎无法让它发挥作用。

rss Feed来自http://www.bankofcanada.ca/stats/assets/rates_rss/noon/en_all.xml

<?php

//Find and grab needed libraries and files.
require_once('proxy_bypass.php');
require_once ('config.php');

$url = $BOCRSS; // Bank of Canada RSS.

$rss = @simplexml_load_string(get_file($url)); // Get the rss feed data.

if($rss) {
 foreach($rss->item as $entry) { //For each RSS item in the rss xml file.
    $cb = $entry->children('http://www.cbwiki.net/wiki/index.php/Specification_1.1');

    //var_dump($cb);        
    //die();

    $code = $entry[targetCurrency];
    $curr = $entry[value];
    //echo $curr .' '. $code . '<br/>'; //Can be deleted - prints out data.

    $dbc = mysql_connect($db_host,$db_user,$db_password); //Connect to Shares.
    mysql_select_db($db_name, $dbc); //Select database.
    $qry = "INSERT INTO $db_table (currencycode,rate) VALUES ('$code', '$curr')"; //Creates the query.
    if (!$dbc){
    die('Could not connect: ' . mysql_error()); // Echo this is the connection to the database can't be made.

}

if (mysql_query($qry, $dbc)) {
    echo "Database created"; // Echo this if the RSS feed in placed in the database.
}
else {
    echo "Error creating database: " . mysql_error(); //Otherwise say this.
}
mysql_close($dbc); // Close the database connection.
}

} else echo "Error with RSS feed"; //Echo error if RSS is unreachable.

?>

我包含的两个文件让我通过我大学的代理服务器,配置包含我的mysql数据库详细信息和rss feed的URL。

var转储给了我:

object(SimpleXMLElement)#63(1){[“statistics”] =&gt; object(SimpleXMLElement)#65(2){[“country”] =&gt; string(2)“CA”[“exchangeRate”] =&gt; object(SimpleXMLElement)#66(5){[“value”] =&gt; string(6)“1.0029”[“baseCurrency”] =&gt; string(3)“CAD”[“targetCurrency”] =&gt; string(3)“USD”[“rateType”] =&gt; string(24)“加拿大银行中午率”[“observationPeriod”] =&gt; string(25)“2012-02-01T12:15:00-05:00”}}}

现在我是PHP的初学者,所以它可能都错了。我试图将'targetCurrency'和'value'放到我的数据库中,但我得到的是50多个空行。它必须意味着正在生成数据库,但没有任何进展。 如果有人可以更改代码以使其工作,我将非常感激,因为我试图让它工作但无济于事。

1 个答案:

答案 0 :(得分:0)

你不应该使用$ cb(每个项目的第一个子节点)而不是$ element吗?

$code = $cb['targetCurrency'];
$curr = $cb['value'];

另外,请使用类似mysql_real_escape_string($rss_field_value)的内容来转义您在SQL查询中放置的值,以防止SQL注入。