使用PHP从JSON更新MySQL表

大家好,感谢您的耐心等待,

我正在尝试编写一个cron作业来更新MySQL数据库中的货币汇率.我收到的JSON数据看起来像这样;

{
  "disclaimer": "Exchange rates are provided for informational purposes only,and do not constitute financial advice of any kind. Although every attempt is made to ensure quality,NO guarantees are given whatsoever of accuracy,validity,availability,or fitness for any purpose - please use at your own risk. All usage is subject to your acceptance of the Terms and Conditions of Service,available at: ","license": "Data sourced from various providers with public-facing APIs; copyright may apply; resale is prohibited; no warranties given of any kind. Bitcoin data provided by. All usage is subject to your acceptance of the License Agreement available at:","timestamp": 1427914861,"base": "CAD","rates": {
    "AED": 2.908081,"AFN": 45.794285,"ALL": 103.179929,"AMD": 373.363817,"ANG": 1.416823,"AOA": 85.603315,"ARS": 6.986543,"AUD": 1.041048,"AWG": 1.42113,"AZN": 0.829254,"BAM": 1.437242,"BBD": 1.583432,"BDT": 61.66817,"BGN": 1.437963,"BHD": 0.298493,"BIF": 1246.009421,"BMD": 0.791716,"BND": 1.080918,"BOB": 5.468926,"BRL": 2.518805,"BSD": 0.791716,"BTC": 0.0032649636,"BTN": 49.501403,"BWP": 7.855039,"BYR": 11644.270337,"BZD": 1.581753,"CAD": 1,"CDF": 733.551108,"CHF": 0.76573,"CLF": 0.019475,"CLP": 490.205281,"CNY": 4.895048,"COP": 2038.824734,"CRC": 422.26163,"CUC": 0.791716,"CUP": 0.791726,"CVE": 80.458447,"CZK": 20.263721,"DJF": 140.548137,"DKK": 5.492318,"DOP": 35.391341,"DZD": 77.203651
  }
}

由于该表已经存在,我想要做的就是更新表中的货币,而不是JSON文件给我的所有货币.我们表中只有7种货币(如果我们接受更多货币或更少货币,它可能会有所变化).这是我提出的代码;

<?php


define("_SITE_SECURED_FILES_",realpath(dirname(__FILE__)."/../../../../")."\Secured_Files");

// Database Credentials
require_once(_SITE_SECURED_FILES_."\Database\credentials.mysql.php");

// Open Exchange Rates Credentials
require_once(_SITE_SECURED_FILES_."\Open_Exchange_Rates\credentials.openexchangerates.php");

// Requested file
// Could also be e.g. 'currencies.json' or 'historical/2011-01-01.json'
$file = 'latest.json';
$base_currency = 'CAD';

// Open CURL session
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://openexchangerates_org/api/{$file}?app_id={$appId}&base={$base_currency}");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

// Get the data:
$json = curl_exec($ch);
curl_close($ch);

// Decode JSON response:
$exchangeRates = json_decode($json);

foreach($exchangeRates['rates'] as $key => $value) {
if($value) {

//how to use json array to insert data in Database
    mysqli_query($mysql,"UPDATE currencies SET dblRateCAD = '".$value."' WHERE strCode = '".$exchangeRates['rates']."' LIMIT 1");
    }
}


?>

现在,它不起作用.我越来越

PHP Fatal error: Cannot use object of type stdClass as array on line 29: foreach($exchangeRates[‘rates’] as $key => $value) {

解决方法

如果你想要一个数组只需使用json_decode($json,true)并将你的查询修改为“UPDATE currency SET dblRateCAD =’”.$value.“’WHERE strCode =’”. $key.“’

// Decode JSON response:
$exchangeRates = json_decode($json,true);

foreach($exchangeRates['rates'] as $key => $value) {
if($value) {

//how to use json array to insert data in Database
    mysqli_query($mysql,"UPDATE currencies SET dblRateCAD = '".$value."' WHERE strCode = '". $key ."' LIMIT 1");
    }
}

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...