使用php和simplexml_load_file从xlm中提取外汇数据

时间:2015-07-22 03:39:36

标签: php mysql

<?php
$url = "http://rates.fxcm.com/RatesXML";
$xml = simplexml_load_file($url);
print_r($xml);
?>

这个脚本确实有效,输出在这里:

http://sitoxte.com/test%20mercato/array.php

但我想要做的是将这些数据放到MySQL标签中,我需要一些帮助,因为我想每分钟存储一次数据。

所以我试试:

JSON到MySQL

但我认为xml变量中的数组并不适用。

我想创建一个for cicle

并创建69这样的表:

  table 1 eur/usd 
id -  Bid - Ask - High - Low - Direction - Last - timestamp
1
2
3
4...
and so on 

刷新模式很简单,我用这种方式做javascript:

    <script>
setInterval(function () {}, 3000);
var myVar=setInterval(function(){myTimer()},10000);
function myTimer() 
{
    var d = new Date();
    document.getElementById("demo").innerHTML = d.toLocaleTimeString();
    location.reload();
}
    </script>

连接也很简单,就像这样:

//Host: 
$localhost="******";
//database
 $mioblog=*******;
//Nome utente: 
$username=********;
//Password: 
$password=*******;
// connessione a MySQL con l'estensione MySQLi
$mysqli = new mysqli("$localhost", "$username", "$password", $mioblog);
// verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore in connessione al DBMS: ".mysqli_connect_error();
// interruzione delle esecuzioni i caso di errore
exit();
}
else 
{
// notifica in caso di connessione attiva
echo "Connessione avvenuta con successo";
}

3 个答案:

答案 0 :(得分:0)

这取决于您使用的数据库,但假设是PDO,如下所示。如果您需要更多详细信息,请查看MySQL教程,但希望这可以帮助您入门并向您展示如何遍历XML。

setTimeout

编辑:如果您只需要一种货币,那么这样的东西应该有效

foreach($xml->Rate as $rate) {
    $query = "INSERT INTO tblrate (time, symbol, bid) VALUES (NOW(), :symbol, :bid)";
    $query = $pdo->prepare($query);
    $query->execute(array(
        ':symbol' => $rate->@attributes['Symbol'],
        ':bid'    => $rate->Bid;
    ));
}

答案 1 :(得分:0)

我的朋友Biagio帮我写代码:

foreach($xml->children() as  $xml_child){
$Symbol = $xml_child['Symbol'];
$Bid = $xml_child->Bid;
$Ask = $xml_child->Ask;
$High = $xml_child->High;
$Low = $xml_child->Low;
$Direction = $xml_child->Direction;
$Last = $xml_child->Last;
echo('$Symbol = '.$Symbol.'<br>');
echo('$Bid = '.$Bid.'<br>');
}

答案 2 :(得分:0)

每隔一秒外汇数据在mysql表中写入的php脚本的最终代码: ...

<body id="top">
<!--    <button onclick="myFunction()">Reload page</button> -->
<a id=demo> <a> 
...

            <?php
    echo date("F j, Y, g:i a", time()).'<br>';  
    $html="";
    $url = "http://rates.fxcm.com/RatesXML";
    $xml = simplexml_load_file($url);

    //Host: 
    //echo('var_dump(  $xml)<br>');
    //var_dump(  $xml);

    //SimpleXMLElement 
    //Host: 
    $localhost="----";
    //database
     $mioblog=----;
    //Nome utente: 
    $username=-----;
    //Password: 
    $password=-----;
    // connessione a MySQL con l'estensione MySQLi
     $mysqli = new mysqli("$localhost", "$username", "$password", $mioblog);
    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno()) {
               // notifica in caso di errore
            echo "Errore in connessione al DBMS: ".mysqli_connect_error();
               // interruzione delle esecuzioni i caso di errore
            exit();
    }
    else {
           // notifica in caso di connessione attiva
        //    echo "Connessione avvenuta con successo";
    }
    // sql to create table

    // sql to create table

    foreach($xml->children() as  $xml_child){

    $Symbol = $xml_child['Symbol'];
    $Bid = $xml_child->Bid;
    $Ask = $xml_child->Ask;
    $High = $xml_child->High;
    $Low = $xml_child->Low;
    $Direction = $xml_child->Direction;
    $Last = $xml_child->Last;
    // sql to create table

    /*
    $sql = "CREATE TABLE $Symbol (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    Bid VARCHAR(30) NOT NULL,
    Ask VARCHAR(30) NOT NULL,
    High VARCHAR(30) NOT NULL,
    Low VARCHAR(30) NOT NULL,
    Direction VARCHAR(30),
    Last VARCHAR(30) NOT NULL,
    reg_date TIMESTAMP
    )";*/

    $sql = "INSERT INTO $Symbol (Bid,Ask,High,Low,Direction,Last)
            VALUES ('$Bid','$Ask',$High,$Low,$Direction,'$Last')";
    if ($mysqli->query($sql) === TRUE) {
     //   echo "Inserito in table ".$Symbol." / bid=".$Bid." / ask=".$Ask."/ High=".$High."/ Low=".$Low."/ Direction=".$Direction."/ Last=".$Last."<br>";

    } else {
        echo "Error creating table: " . $mysqli->error;
    }


    // echo('$Symbol = '.$Symbol.'<br>');
    //echo('$Bid = '.$Bid.'<br>');
    //echo('$Ask = '.$Ask.'<br>');
    //echo('$High = '.$High.'<br>');
    //echo('$Low = '.$Low.'<br>');
    // echo('$Direction = '.$Direction.'<br>');
    // echo('$Last = '.$Last.'<br>');


    }
    $mysqli-->close();

    ?>

....