如何在mysql数据库中获取货币汇率和更新旧汇率

女足世界杯中国39532025-06-12 13:08:17

我厌倦了寻找解决方案,如何获取货币汇率,并将其存储在我的数据库中定期使用PHP。我已经设法连接到我的数据库,但无法更新速率。

我有一个名为Stock_currency的表

我还有一个名为Currency Sell_Rate Buy_Rate的列

这是我试图修改为我的解决方案的PHP代码

代码语言:javascript运行复制class CurrencyConverter {

var $xml_file = "www.ecb.int/stats/eurofxref/eurofxref-daily.xml";

var $localhost, $root, $root, $mohamed, $stock_currency;

var $exchange_rates = array();

//Load Currency Rates

function CurrencyConverter($host,$user,$pass,$db,$tb) {

$this->localhost = $host;

$this->root = $user;

$this->root = $pass;

$this->mohamed = $db;

$this->stock_currency = $tb;

$this->checkLastUpdated();

$conn = mysql_connect($this->localhost,$this->root,$this->root);

$rs = mysql_select_db($this->mohamed,$conn);

$sql = "SELECT * FROM ".$this->stock_currency;

$rs = mysql_query($sql,$conn);

while($row = mysql_fetch_array($rs)) {

$this->exchange_rates[$row['currency']] = $row['rate'];

}

}

/* Perform the actual conversion, defaults to £1.00 GBP to USD */

function convert($amount=1,$from="GBP",$to="USD",$decimals=2) {

return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals));

}

/* Check to see how long since the data was last updated */

function checkLastUpdated() {

$conn = mysql_connect($this->localhost,$this->root,$this->root);

$rs = mysql_select_db($this->mohamed,$conn);

$sql = "SHOW TABLE STATUS FROM ".$this->mohamed." LIKE '".$this->stock_currency."'";

$rs = mysql_query($sql,$conn);

if(mysql_num_rows($rs) == 0 ) {

$this->createTable();

} else {

$row = mysql_fetch_array($rs);

if(time() > (strtotime($row["Update_time"])+(12*60*60)) ) {

$this->downloadExchangeRates();

}

}

}

/* Download xml file, extract exchange rates and store values in database */

function downloadExchangeRates() {

$currency_domain = substr($this->xml_file,0,strpos($this->xml_file,"/"));

$currency_file = substr($this->xml_file,strpos($this->xml_file,"/"));

$fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10);

if($fp) {

$out = "GET ".$currency_file." HTTP/1.1\r\n";

$out .= "Host: ".$currency_domain."\r\n";

$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n";

$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);

while (!feof($fp)) {

$buffer .= fgets($fp, 128);

}

fclose($fp);

$pattern = "{}is";

preg_match_all($pattern,$buffer,$xml_rates);

array_shift($xml_rates);

for($i=0;$i

$exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i];

}

$conn = mysql_connect($this->localhost,$this->root,$this->root);

$rs = mysql_select_db($this->mohamed,$conn);

foreach($exchange_rate as $currency=>$rate) {

if((is_numeric($rate)) && ($rate != 0)) {

$sql = "SELECT * FROM ".$this->stock_currency." WHERE currency='".$currency."'";

$rs = mysql_query($sql,$conn) or die(mysql_error());

if(mysql_num_rows($rs) > 0) {

$sql = "UPDATE ".$this->stock_currency." SET rate=".$rate." WHERE currency='".$currency."'";

} else {

$sql = "INSERT INTO ".$this->stock_currency." VALUES('".$currency."',".$rate.")";

}

$rs = mysql_query($sql,$conn) or die(mysql_error());

}

}

}

}

/* Create the currency exchange table */

function createTable() {

$conn = mysql_connect($this->localhost,$this->root,$this->root);

$rs = mysql_select_db($this->mohamed,$conn);

$sql = "CREATE TABLE ".$this->stock_currency." ( currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency) ) ENGINE=MyISAM";

$rs = mysql_query($sql,$conn) or die(mysql_error());

$sql = "INSERT INTO ".$this->stock_currency." VALUES('EUR',1)";

$rs = mysql_query($sql,$conn) or die(mysql_error());

$this->downloadExchangeRates();

}

}

?> 我已经调用了1.00磅£的换算

代码语言:javascript运行复制

include('CurrencyConverter');

$x = new CurrencyConverter('localhost','root','root','mohamed','Stock_Currency');

echo $x->convert(1.00,'GBP','USD');

?>这是我收到的错误

代码语言:javascript运行复制( ! ) Warning: include(CurrencyConverter) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\Currency.php on line 2

Call Stack

# Time Memory Function Location

1 0.0005 672752 {main}( ) ..\Currency.php:0我也不理解这个错误信息

代码语言:javascript运行复制( ! ) Warning: include() [function.include]: Failed opening 'CurrencyConverter' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\Currency.php on line 2

Call Stack

# Time Memory Function Location

1 0.0005 672752 {main}( ) ..\Currency.php:0这告诉我在第3行有一个我不理解的错误

代码语言:javascript运行复制( ! ) Fatal error: Class 'CurrencyConverter' not found in C:\wamp\www\Currency.php on line 3

Call Stack

# Time Memory Function Location

1 0.0005 672752 {main}( ) ..\Currency.php:0

香港为什么说粤语?
借方与贷方