加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP从JSON更新MySQL表

发布时间:2020-12-13 22:54:59 所属栏目:PHP教程 来源:网络整理
导读:大家好,感谢您的耐心等待, 我正在尝试编写一个cron作业来更新MySQL数据库中的货币汇率.我收到的JSON数据看起来像这样; { "disclaimer": "Exchange rates are provided for informational purposes only,and do not constitute financial advice of any kind.
大家好,感谢您的耐心等待,

我正在尝试编写一个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_."Databasecredentials.mysql.php");

// Open Exchange Rates Credentials
require_once(_SITE_SECURED_FILES_."Open_Exchange_Ratescredentials.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");
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读