Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析/转换XML股票数据并上传到mySQL数据库_Php_Mysql_Xml - Fatal编程技术网

Php 解析/转换XML股票数据并上传到mySQL数据库

Php 解析/转换XML股票数据并上传到mySQL数据库,php,mysql,xml,Php,Mysql,Xml,这可能不是最好的方法,所以我愿意听取意见,但我想通过他们的API从我的经纪公司提取数据,并将其加载到mySQL数据库中。我开发了php代码来连接和检索XML数据。非常感谢任何编码帮助或指导 我希望它做什么: 1.能够将XML数据捕获为变量 2.解析XML数据并将其上载到具有相同字段名的mySQL表(数据库和表已创建) 背景: 1.我是PHP新手,但对html非常熟悉,学习速度也很快 我运行一个php文件,从我的经纪人那里检索数据。我希望能够: (a) 捕获一个XML字段作为变量(这样我就可以基于

这可能不是最好的方法,所以我愿意听取意见,但我想通过他们的API从我的经纪公司提取数据,并将其加载到mySQL数据库中。我开发了php代码来连接和检索XML数据。非常感谢任何编码帮助或指导

我希望它做什么: 1.能够将XML数据捕获为变量 2.解析XML数据并将其上载到具有相同字段名的mySQL表(数据库和表已创建)

背景: 1.我是PHP新手,但对html非常熟悉,学习速度也很快

  • 我运行一个php文件,从我的经纪人那里检索数据。我希望能够: (a) 捕获一个XML字段作为变量(这样我就可以基于单个值创建表)和(b)将XML数据上传到表中
  • 我已经在论坛上读了很多帖子,我正在努力为自己找到一些接近的东西

    从php数据请求(tkdataex.php)返回的示例xml数据(显然要长得多):

    0
    拨打MAR-02$1550.00
    0
    0
    拨打MAR-02$1575.00
    0
    0
    致电MAR-02$1600.00
    0
    0
    成功
    
    迄今为止我的代码(filloptionstable.php)返回服务器错误:

    <?php
    
    $url = "tkdataex.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);    //get url contents
    
    $data = curl_exec ($ch);    //execute curl request
    curl_close($ch);
    
    $xml = simplexml_load_string($data);
    
    require_once 'dbconnect.php';
    $database = 'SPX';
    $table = 'SPXchain';
    
    
    foreach ($xml -> quote as $row){
        $strikeprice = $row -> strikeprice;
        $last = $row -> last;
        $strikeprice = $row -> volume;
        INSERT INTO chain (strikeprice, last, volume) VALUES ($stripeprice,$last,$volume);
    }
    
    ?>
    
    报价为$row){
    $strikeprice=$row->strikeprice;
    $last=$row->last;
    $strikeprice=$row->volume;
    将值($stripeprice,$last,$volume)插入到链(stripeprice,last,volume)中;
    }
    ?>
    
    我知道这适用于手动指定值的一个条目,但我不知道如何获取XML值以使其动态(filloptionstablebasic.php):


    首先使用
    simplexml\u load\u string()
    可能会让人感到困惑。 函数返回一个对象,其中所有属性都是对象

    为了能够在变量中存储属性值,需要将属性转换为正确的类型

    将代码更改为(假设这些值是整数):

    整数使用
    (int)
    ,字符串使用
    (string)


    注意,
    ->
    周围没有空格。这只会使它更难阅读。

    难怪您出现服务器错误<代码>插入到链中(删除项、最后一个、卷)值($stripeprice、$last、$volume)
    是SQL。。不是PHP。您应该先看看关于mysqli的PHP手册:。阅读准备好的语句,在php中可以使用INSERT INTO chain。我刚刚用“filloptionstablebasic.php”更新了我的第一篇文章,它运行良好,但手动指定了值。我不知道如何动态地获取XML值。我认为您对mysqli的指导非常好!我正在阅读并简化我的db connect代码和许多其他项目。我仍在努力寻找有关如何获取XML字段以存储到变量或推送到db表的资源。这个网站对于任何开始使用mysqli的人来说都是一个很好的资源:除非你有一些非官方的PHP解析器,否则你不能直接在PHP文件中编写
    INSERT到…
    。您需要像在第二个文件中那样进行操作。顺便提一下不要使用不推荐使用的
    mysql.*
    函数。它们都是不安全的,正如前面提到的,不推荐使用。我添加了一个关于在变量中存储XML属性的答案。谢谢Magnus。我发现我试图粘贴的响应已经被解析了。您的示例帮助我了解如何将数据插入表中。我现在也在遵循预先准备好的语句。我可以问你,你对php中的curl_multi有什么经验吗?
    <?php
    
    $url = "tkdataex.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);    //get url contents
    
    $data = curl_exec ($ch);    //execute curl request
    curl_close($ch);
    
    $xml = simplexml_load_string($data);
    
    require_once 'dbconnect.php';
    $database = 'SPX';
    $table = 'SPXchain';
    
    
    foreach ($xml -> quote as $row){
        $strikeprice = $row -> strikeprice;
        $last = $row -> last;
        $strikeprice = $row -> volume;
        INSERT INTO chain (strikeprice, last, volume) VALUES ($stripeprice,$last,$volume);
    }
    
    ?>
    
    <?php
    
    $url = "testfull.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);    //get url contents
    
    $data = curl_exec ($ch);    //execute curl request
    curl_close($ch);
    
    $xml = simplexml_load_string($data);
    
    require_once 'dbconnect.php';
    $database = 'SPX';
    $table = 'SPXchain';
    
    $xdate = 20160302;
    $strikeprice = 1900 ;
    $delta = 0.082;
    $interest = 100;
    $volume = 120;
    $put_call = '"call"';
    $bid = 4.56;
    $ask = 4.90;
    $last = 4.72;
    $daychange = -0.24;
    $pull_time = CURRENT_TIMESTAMP;
    
    $sql = 'INSERT INTO SPXchain '.
          '(
            xdate,
            strikeprice, 
            delta,
            interest,
            volume,
            put_call,
            bid,
            ask,
            last,
            daychange,
            pull_time) '.
          'VALUES ( ' .
            $xdate . ', ' .
            $strikeprice . ', ' . 
            $delta . ', ' . 
            $interest . ', ' . 
            $volume . ', ' . 
            $put_call . ', ' .
            $bid . ', ' . 
            $ask . ', ' . 
            $last . ', ' .
            $daychange . ', ' . 
            $pull_time . ')';
    
    mysql_select_db('SPX');
       $retval = mysql_query( $sql, $conn );
    
       if(! $retval ) {
          die('Could not enter data: ' . mysql_error());
       }
    
    echo "Entered data successfully into " . $table;
    
    foreach ($xml->quote as $row){
        $strikeprice = (int) $row->strikeprice;
        $last = (int) $row->last;
        $strikeprice = (int) $row->volume;
        ...
    }