php 读取mysql 返回xml_用php解析xml并保存到mysql
我被要求解析一个存储为XML文件的简单文件,然后将数据保存到MySQL。
然而,我完全不知道该怎么做,并且在网上查看之后,给出的所有示例对于我的问题来说似乎太复杂,或者不是正确的解决方案。XML文件如下所示
游戏分数.xml
Reference Scores
-
Game Information Scores
-
-
............etc
然后我必须把它保存到现有的mysql中,看起来
CREATE TABLE IF NOT EXISTS `scrore_table` (
`scrore_id` int(11) NOT NULL auto_increment,
`scrore_title` varchar(32) collate utf8_bin NOT NULL default '',
`scores` varchar(15) collate utf8_bin NOT NULL default '',
`decimal_place` char(1) collate utf8_bin NOT NULL,
`value` float(15,8) NOT NULL,
`date_updated` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`currency_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1; ;
INSERT INTO `scrore_table` (`scrore_id`, `scrore_title`, `scores`, `decimal_place`, `value`, `date_updated`) VALUES
(1, 'Game Class A0', 'GameA0', '2', 1.00000000, '2010-04-06 22:00:54'),
(2, 'Game Class A1', 'GameA1', '2', 1.58030000, '2010-04-06 22:00:54'),
(3, 'Game Class A2', 'GameA2', '2', 21.3503000, '2010-04-06 22:00:54'),
..............................etc
(15, 'Game Class A15', 'GameA15', '2', 135, '2010-04-06 22:00:54');
关于这个问题,我有下面的PHP脚本:
class Scores_Converter {
var $xml_file = "http://192.168.1.112/gamescores/games_scores.xml";
var $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_table;
var $scores_values = array();
//Load convertion scores
function Scores_Converter($host,$user,$pass,$db,$tb) {
$this->mysql_host = $host;
$this->mysql_user = $user;
$this->mysql_pass = $pass;
$this->mysql_db = $db;
$this->mysql_table = $tb;
$this->checkLastUpdated();
$conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
$rs = mysql_select_db($this->mysql_db,$conn);
$sql = "SELECT * FROM ".$this->mysql_table;
$rs = mysql_query($sql,$conn);
while($row = mysql_fetch_array($rs)) {
$this->scores_values[$row['scores']] = $row['value'];
}
}
/* Perform the actual conversion, defaults to 1.00 GameA1 to GameA3 */
function convert($amount=1,$from="GameA1",$to="GameA3",$decimals=2) { return(number_format(($amount/$this->scores_values[$from])*$this->scores_values[$to],$decimals));
}
/* Check to see how long since the data was last updated */
function checkLastUpdated() {
$conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
$rs = mysql_select_db($this->mysql_db,$conn);
$sql = "SHOW TABLE STATUS FROM ".$this->mysql_db." LIKE '".$this->mysql_table."'";
$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->downloadValueScores();
}
}
}
/* Download xml file, extract exchange values and save the values in database */
function downloadValueScores() {
$scores_domain = substr($this->xml_file,0,strpos($this->xml_file,"/"));
$scores_file = substr($this->xml_file,strpos($this->xml_file,"/"));
$fp = @fsockopen($scores_domain, 80, $errno, $errstr, 10);
if($fp) {
$out = "GET ".$scores_file." HTTP/1.1\r\n";
$out .= "Host: ".$scores_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_values);
array_shift($xml_values);
for($i=0;$i
$exchange_value[$xml_values[0][$i]] = $xml_values[1][$i];
}
$conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
$rs = mysql_select_db($this->mysql_db,$conn);
foreach($exchange_value as $scores=>$value) {
if((is_numeric($value)) && ($value != 0)) {
$sql = "SELECT * FROM ".$this->mysql_table." WHERE scores='".$scores."'";
$rs = mysql_query($sql,$conn) or die(mysql_error());
if(mysql_num_rows($rs) > 0) {
$sql = "UPDATE ".$this->mysql_table." SET value=".$value." WHERE scores='".$scores."'";
} else {
$sql = "INSERT INTO ".$this->mysql_table." VALUES('".$scores."',".$value.")";
}
$rs = mysql_query($sql,$conn) or die(mysql_error());
}
}
}
}
/* Create the scores table */
function createTable() {
$conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
$rs = mysql_select_db($this->mysql_db,$conn);
$sql = "CREATE TABLE ".$this->mysql_table." ( `scrore_id` int(11) NOT NULL, `scrore_title` varchar(32) collate utf8_bin NOT NULL default '', `scrores` char(12) NOT NULL default '', `decimal_place` char(1) collate utf8_bin NOT NULL default '2', `value` float(15,8) NOT NULL,`date_updated` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY(currency) ) ENGINE=MyISAM";
$rs = mysql_query($sql,$conn) or die(mysql_error());
$sql = "INSERT INTO ".$this->mysql_table." VALUES(1,'','GameA0','2',1,now())";
$rs = mysql_query($sql,$conn) or die(mysql_error());
$this->downloadValueScores();
}
}
?>
然后,使用创建的脚本mysql表/查询如下:
INSERT INTO `scrore_table` (`scrore_id`, `scrore_title`, `scrores`, `decimal_place`, `value`, `date_updated`) VALUES
(1, 'Game Class A0', 'GameA0', '2', 1.00000000, '2010-10-24 00:27:01');
但是数据库不是自动填充的,这看起来函数downloadValueScores()工作不正常。
我试过把它修好,我想这就是我要走的方向,但我不知道。另外,很抱歉,我对PHP还不熟悉。
任何帮助或指点都是很好的,非常感谢
php 读取mysql 返回xml_用php解析xml并保存到mysql相关推荐
- mysql t 保存_检查 (调试) - 离线消息保存到 MySQL - 《EMQ X Enterprise v4.1 中文文档》 - 书栈网 · BookStack...
离线消息保存到 MySQL 搭建 MySQL 数据库,并设置用户名密码为 root/public,以 MacOS X 为例: $ brew install mysql $ brew services ...
- SparkStreaming读取Kafka的Json数据然后保存到MySQL
一般我们使用SparkStreaming消费kafka数据,获取到数据后解析,使用JDBC的方式写入数据库,如下所示. 以上的方式没什么毛病,但是当我们消费的kafka数据类型比较多样的时候,我们需要 ...
- python股票接口_Python 从 sina 股票数据接口读取数据,并保存到 MySQL 数据库
说明 从 sina 的数据接口获取数据,之后,保存到 MySql 数据库 文件:getDataFromSina.py ''' Created on 2018年2月11日 @author: Livon ...
- Beautifulsoup爬取起点中文网 保存到mysql
一.分析网页 目标网站:起点中文网 目标数据:类别(categoryName)小说书名(bookName) 小说链接(middleUrl)字数(wordsNums) 作者(updateTiems) 最 ...
- kafka偏移量保存到mysql里_SparkStreaming+kafka保存offset的偏移量到mysql案例
MySQL创建存储offset的表格 mysql> use test mysql> create table hlw_offset( topic varchar(32), groupid ...
- mysql打印语句_大数据挖掘—(八):scrapy爬取数据保存到MySql数据库
(大数据挖掘-(七):读懂MySql数据库操作)(大数据挖掘神器--scrapy spider爬虫框架(五):解析多层网页) 通过往期的文章分享,我们了解了如何爬取想要的数据到Items中,也了解了如 ...
- 将labview连续数据保存到mysql数据库器
这一篇是在之前完成Labview和mysql连接,并且进行了简单的CRUD删除的基础上来的.我们一般不会拿Labview来做学生这种数据管理系统,而是对于基本传感器数据的采集和保存,而传感器采集数据会 ...
- 使用python scrapy爬取全国小区信息(包括小区价格,经纬度,面积,户数等),并保存到mysql和excel
目标 此次爬取的网站是楼盘网,因为只爬取小区信息,所以先从深圳小区(http://sz.loupan.com/community/)网页入手分析,然后发散爬取至全国. 爬取的信息包括 省,所属市,所属 ...
- python hive mysql_[7] 编写Python脚本将Hive的运算结果保存到MySQL数据库中(1) - 摩西莫西 - ITeye技术网站...
编写Python脚本将Hive的运算结果保存到MySQL数据库中(1) 很多情况下,需要将Hive中的运算结果保存到MySQL数据库中,可以通过简单的Python脚本来实现. 例子1:如果获取Hive ...
最新文章
- 微信小程序 --- 拨打电话
- linux 定时重启mysql_Linux下定时自动重启apache及mysql
- flash 绘图API:绘制基础的图形
- 百度翻译十年:语种全球首破200大关,质量提升30个百分点,每天翻译超千亿字符...
- 图形图像处理_c/c++
- 图像处理之一阶微分应用
- Linux环境搭建 | 手把手教你配置Linux虚拟机
- mysql out 注意_总结关于in和out注意点
- 建立丰富多彩的toast的简单实例
- python xlwt 解决报错:ValueError: More than 4094 XFs (styles)
- image unity 拉伸_Unity UGUI基础之Image
- Android开发中Ant命令编译和APK签名的一些心得
- 室内定位程序_在哪都能找到你!苹果新iPhone将支持UWB高精度室内定位
- 环境变量GOBIN导致GoClipse运行出现异常
- 计算机考试综合模块怎么做,《综合素质》几大模块备考指导要知道!
- 坐标转换程序:(1)四参数和七参数的计算
- CSS-属性选择器的用法详解
- Python小白入门练习试题
- 电影推荐系统 python简书_基于Spark的电影推荐系统(实战简介)
- python中网络编程总结(udp,tcp)
热门文章
- 【UV打印】UV平板打印机校准教程
- 温哥华菜鸟生活攻略(1)
- 微信小程序开发详细步骤解决方案
- S905L(P211)盒子刷android tv以及刷emuelec 4.4/4.5的向导/方法
- 【Quartz】任务调度
- 在.net gridview 更新回oracle数据库,.net 连接Oracle操作 - cathy_10 - 博客园
- python:map_reduct_filter_sorted
- 随机模型,估计与控制 ——介绍
- 2021漳州一中历年高考成绩查询,2021年漳州中考录取分数线,历年漳州各高中录取分数线排名...
- 王姨劝我学HarmonyOS鸿蒙2.0系列教程之三Ability概述调用方法!