2012-02-02 11 views
0

私のデータベースに銀行のRSSフィードを取得する助けが必要です。私はいくつかのことを試みましたが、うまく動作しないようです。PHPを使用してmysqlデータベースに銀行rssフィードを取得しますか?

RSSフィードは、私が含まれている2つのファイルが私の大学のプロキシサーバを経由して私を得る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. 

?> 

からのものであり、設定は、RSSフィードのための私のMySQLデータベースの詳細とURLを保持しています。

のvarダンプは私にこれを与える:

オブジェクト(たSimpleXMLElement)#63(1){[ "統計"] =>オブジェクト(たSimpleXMLElement)#65(2){[ "国"] => (2) "CA" ["exchangeRate"] =>オブジェクト(SimpleXMLElement)#66(5){["値"] =>文字列(6) "1.0029" ["baseCurrency"] =>文字列(3) " "カナダの銀行の正午レート" ["observationPeriod"] =>文字列(25) "2012年2月1日01T12:15:00-05:00 "}}}

私はPHPの初心者ですので、おそらくすべて間違っています。私は 'targetCurrency'と 'value'をデータベースに取得しようとしていますが、取得するのは50以上の空の行だけです。データベースが生成されているが、何も入っていないことを意味する必要があります。 誰かがコードを変更して動作させることができれば、私はそれを動作させようと努力したが、役に立たなかった。

+0

**警告**あなたのコードはSQLインジェクション攻撃に対して脆弱です。 –

答えて

0

代わりに$ cb(各項目の最初の子ノード)を使用するべきですか?

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

また、SQLインジェクションを防ぐために、あなたはSQLクエリに入れた値をエスケープするmysql_real_escape_string($rss_field_value)のようなものを使用してください。

+0

私の古いコードを "code = $ cb ['targetCurrency']; + $ curr = $ cb ['value'];"に変更しました。私はその後、何が出てくるのかを見るためにvar dumpをしました。どちらもNULLを返しました。私の空行の問題は依然として残っています。とにかくおかげさまで、あなたが言ったことは、論理的な答えのように思われます。ありがとう。 – Zyble

関連する問題