Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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服务并插入数据库_Php_Mysql_Web Services_Phpmyadmin_Xml Parsing - Fatal编程技术网

如何使用php解析xml服务并插入数据库

如何使用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

我不太懂PHP,因为我是android开发者,所以请帮助我。 我刚刚尝试使用PHP将XML数据输入数据库。我看到了其他的例子,但不知道我能在我的情况下做什么

XML链接:

PHP代码: 这里我可以定义什么来检索和设置数据库中的数据。我知道下面的代码不正确。请为opt对象更正我的for each循环,其他也请检查我的sql查询

<!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();//密切联系
?>

希望它能帮助您:-)

不,这不是我的答案,我希望选择加入循环,因为它有多个选择节点,请查看我需要解析和插入此链接