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