2010-11-23 1 views
2

Bloombergを使用して通貨の実勢レート(基本レートとしてUSDを使用)を取得する通貨換算サービスで作業しています。ブルームバーグからすべての金利を得ることができます。キャッシュに入れて後で取り出すためにデータベースに挿入するときに、エラー Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given inが吐き出されます。ここでmysqliで複数のクエリを実行する

は、特定の部分のための私のPHPです:

//Select all the currency codes where the rate has not been set 
$q = "SELECT currency_code FROM `currency` WHERE rate = 0"; 
//Run the query 
$r = mysqli_query($dbc,$q); 

//If the query was successful.. 
if($r){ 

//Fetch the results from the query 
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){ 

    //Set $curr to the currency code 
    $curr = $row['currency_code']; 
    //Set $rate to a currency_code from the previous query, and put it in the bloomberg function 
    $rate = bloomberg($curr); 

    //Update the currency table with the vars just set 
    $q = "UPDATE currency SET rate='$rate' WHERE currency_code='$curr'"; 
    //Run the query 
    $r = mysqli_query($dbc, $q); 

} 

私はこれを実行すると、それはしばらくのどこかに障害が発生していることを意味する、各リフレッシュ上のデータベースに一つだけのアイテムを更新しますが、私はできませんどこにピンポイントがあるようだ。

これを解決するために、私は20分間Googleを検索し、複数のクエリを実行できないmyqliについて読んでいます。これは私がquerysを実行し、PHPとmySQLを使ってそれらをフェッチするPHPの本を介して教えられた方法です。ユニのプロキシサービスの周りに追加の読み取り/解説/ヘルプへようこそ

function bloomberg($to){ 
$cur = $to; 
$file = uwe_get_file('http://www.bloomberg.com/personal-finance/calculators/currency-converter/'); 
if(preg_match ("/price\['$cur:\S*\s=\s(\S*);/",$file,$out)){ 
return number_format($out[1], 4); 
} 
} 

リンクを取得するにはuwe_get_file =機能:ここで

は、ブルームバーグ機能が道です。あなたは、UPDATE文の結果と$rを上書きしている

答えて

2

$q = "UPDATE currency SET rate='$rate' WHERE currency_code='$curr'"; 
$r = mysqli_query($dbc, $q); 

mysqli_query('UPDATE...')mysqli_resultオブジェクトを返しません。したがって、whileの2回目のパスでは、$rがブール値に変更されました。それを修正するために別の変数名にそれを変更します。

$q = "UPDATE currency SET rate='$rate' WHERE currency_code='$curr'"; 
$u = mysqli_query($dbc, $q); 
+0

は、私は他のプロジェクトで前にこれをやった、それがうまく働いています、答えを投票して投票として、これに気付かなかった、ありがとうございました最高です、お時間をありがとう。 – Daniel

関連する問題