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



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

我有一个名为Stock_currency的表

我也有column called [Currency] [Spot_Rate] [Sell_Rate] [Amont] [Buy_Rate]

这是一个PHP代码,我试图改变我的解决方案

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.1rn";
             $out .= "Host: ".$currency_domain."rn";
             $out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5rn";
             $out .= "Connection: Closernrn";
             fwrite($fp, $out);
             while (!feof($fp)) {
                $buffer .= fgets($fp, 128);
             }
             fclose($fp);
             $pattern = "{<Cubes*currency='(w*)'s*rate='([d.]*)'/>}is";
             preg_match_all($pattern,$buffer,$xml_rates);
             array_shift($xml_rates);
             for($i=0;$i<count($xml_rates[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英镑

<?php
   include('CurrencyConverter');
   $x = new CurrencyConverter('localhost','root','root','mohamed','Stock_Currency');
   echo $x->convert(1.00,'GBP','USD');
?>

这是我收到的错误

( ! ) Warning: include(CurrencyConverter) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in C:wampwwwCurrency.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..Currency.php:0

I don ' t understand this error message also

( ! ) Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'CurrencyConverter' for inclusion (include_path='.;C:phppear') in C:wampwwwCurrency.php on line 2
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..Currency.php:0

这告诉我第3行有错误,我不理解

( ! ) Fatal error: Class 'CurrencyConverter' not found in C:wampwwwCurrency.php on line 3
Call Stack
#   Time    Memory  Function    Location
1   0.0005  672752  {main}( )   ..Currency.php:0

错误消息非常直接:include('CurrencyConverter');失败是因为在C:wampwww目录中没有名为CurrencyConverter的文件。你是说CurrencyConverter.php吗?

第二个错误消息也抱怨CurrencyConverter不存在。这一次,它还在PHP的扩展名目录中查找该文件,但它在那里找不到它。

第三个错误是抱怨$x = new CurrencyConverter(...),因为您从未加载CurrencyConverter类-我假设它在丢失的文件中。

这三个错误消息将通过包含该文件来纠正。在哪里有CurrencyConverter类的PHP文件?您需要在include语句中放入文件名,而不是类名。

注:-请不要使用mysql_*功能。已弃用。使用mysqli或pdo

最新更新