您现在的位置是:首页 > 站长学院 > PHP教程 > PHP教程

使用PHP从JSON更新MySQL表

编辑:站长来源:网络整理作者: 未知2020-12-13PHP教程

简介大家好,感谢您的耐心等待, 我正在尝试编写一个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_."\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");
    }
}

很赞哦! ()

点击排行

本栏推荐

猜你喜欢