如何使用php解析xml服务并插入数据库
我不太懂PHP,因为我是android开发者,所以请帮助我。 我刚刚尝试使用PHP将XML数据输入数据库。我看到了其他的例子,但不知道我能在我的情况下做什么 XML链接: PHP代码: 这里我可以定义什么来检索和设置数据库中的数据。我知道下面的代码不正确。请为opt对象更正我的for each循环,其他也请检查我的sql查询如何使用php解析xml服务并插入数据库,php,mysql,web-services,phpmyadmin,xml-parsing,Php,Mysql,Web Services,Phpmyadmin,Xml Parsing,我不太懂PHP,因为我是android开发者,所以请帮助我。 我刚刚尝试使用PHP将XML数据输入数据库。我看到了其他的例子,但不知道我能在我的情况下做什么 XML链接: PHP代码: 这里我可以定义什么来检索和设置数据库中的数据。我知道下面的代码不正确。请为opt对象更正我的for each循环,其他也请检查我的sql查询 <!doctype HTML> <html> <head> <?php header('Content-Ty
<!doctype HTML>
<html>
<head>
<?php
header('Content-Type: application/xml; charset=utf-8');
$mysqli = new mysqli ( 'localhost', 'mabhim92', '9993115300', 'gcm_chat');
?>
</head>
<body>
<?php
$xml = simplexml_load_file("http://ca.sharmatutorial.com/ws.asmx/GET_Question_ByDate?dtDate=2016-03-17");
$nodes = new SimpleXMLElement($xml, null, true)
or die("cannot create");
foreach ($nodes->children() as $child)
{
$Ques_id= $child->id;
$Question= $child->text;
$Option_1= $child->opt;
$Option_2= $child->opt;
$Option_3= $child->opt;
$Option_4= $child->opt;
$Answer= $child->opt->ans;
$date= $child->date;
));
$sql = "INSERT INTO feeds (Ques_id, Question, Option_1, Option_2, Option_3, Option_4, Answer, date) VALUES('". $Ques_id."','". $Question."','". $Option_1."','". $Option_2."','". $Option_3."','". $Option_4."','". $Answer."','". $date."')";
mysql_query($sql);
}
?>
</body>
</html>
children()作为$child)
{
$Ques_id=$child->id;
$Question=$child->text;
$Option_1=$child->opt;
$Option_2=$child->opt;
$Option_3=$child->opt;
$Option_4=$child->opt;
$Answer=$child->opt->ans;
$date=$child->date;
));
$sql=“在提要中插入(Ques_id、Question、Option_1、Option_2、Option_3、Option_4、答案、日期)值(“$Ques_id.”、“$Question.”、“$Option_1.”、“$Option_2.”、“$Option_3.”、“$Option_4.”、“$Answer;
mysql_查询($sql);
}
?>
我的数据库字段:
1 Ques_id=id
2问题=文本
3选项_1=选项(选项值中的第一个对象)
4选项2=选项(选项值中的第二个obj)
5选项3=选项(选项值中的第三个obj)
6选项4=选项(选项值中的第四个obj)
7答案=(哪个选项是ans=1)
8 date(timestamp)=date您使用了mysqli语法,这很好。但在查询执行时,您使用了旧的mysql.*语法,这是错误的 请参阅此链接:- 建议: 1) 您应该检查连接错误以及查询错误 2) 如果您的查询有外部双引号(“”),则不需要解析。您只需在php变量周围添加一个引号即可 3) 在DB表中添加主键是一种很好的做法 4) 将连接对象写入body标记而不是header标记 5) 始终打开开发模式下的错误报告
<!doctype HTML>
<html>
<head>
</head>
<body>
<?php
header('Content-Type: application/xml; charset=utf-8');
$mysqli = new mysqli ( 'localhost', 'mab***', '99931***', 'gcm**');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$xml = simplexml_load_file("http://ca.sharmatutorial.com/ws.asmx/GET_Question_ByDate?dtDate=2016-03-17");
$nodes = new SimpleXMLElement($xml, null, true) or die("cannot create");
foreach ($nodes->children() as $child)
{
$Ques_id= $child->id;
$Question= $child->text;
$Option_1= $child->opt;
$Option_2= $child->opt;
$Option_3= $child->opt;
$Option_4= $child->opt;
$Answer= $child->opt->ans;
$date= $child->date;
//)); Typo error. No need for this line
$sql = "INSERT INTO feeds (Ques_id, Question, Option_1, Option_2, Option_3, Option_4, Answer, date) VALUES('$Ques_id','$Question','$Option_1','$Option_2','$Option_3','$Option_4','$Answer','$date')";
$res = $mysqli->query($sql);
if (!$res) {
printf("Errormessage: %s\n", $mysqli->error);
}
}
$mysqli->close(); // close connection
?>
</body>
</html>
children()作为$child)
{
$Ques_id=$child->id;
$Question=$child->text;
$Option_1=$child->opt;
$Option_2=$child->opt;
$Option_3=$child->opt;
$Option_4=$child->opt;
$Answer=$child->opt->ans;
$date=$child->date;
//));输入错误。不需要这行
$sql=“在提要中插入值(“$Ques\u id”、“Question”、“Option\u 1”、“Option\u 2”、“Option\u 3”、“Option\u 4”、“Answer”、“date”)”)(“$questid”、“Question”、“Option\u 1”、“Option\u 2”、“Option\u 3”、“Option\u 4”、“Answer”、“date”);
$res=$mysqli->query($sql);
如果(!$res){
printf(“错误消息:%s\n”,$mysqli->error);
}
}
$mysqli->close();//密切联系
?>
希望它能帮助您:-)不,这不是我的答案,我希望选择加入循环,因为它有多个选择节点,请查看我需要解析和插入此链接