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

时间:2016-04-06 05:00:47

标签: php mysql web-services phpmyadmin xml-parsing

我不太了解PHP因为我是Android开发人员所以请帮助我。 我只是尝试使用PHP将XML数据输入数据库。我已经看到了其他例子,但在我的案例中我无法做到。

XML链接: http://ca.sharmatutorial.com/ws.asmx/GET_Question_ByDate?dtDate=2016-03-17

PHP代码: 在这里我可以为数据库中的检索和设置数据定义什么。我知道下面的代码不正确。请更正我的每个循环的opt对象和其他也请检查我的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>

我的数据库字段:

1 Ques_id = id

2问题=文字

3 Option_1 = opt(opts值中的第一个obj)

4 Option_2 = opt(opts值中的第二个obj)

5 Option_3 = opt(opts值中的第三个obj)

6 Option_4 = opt(opts值中的第四个obj)

7答案=(选择ans = 1)

8日期(时间戳)=日期

1 个答案:

答案 0 :(得分:0)

您使用了 mysqli 语法,这很好。但是在查询执行时,您使用了旧的 mysql _ * 语法,这是错误的。

请参阅此链接: - MySQL vs MySQLi when using PHP

建议: -

1)您还应该检查连接错误以及查询错误

2)如果您的查询具有外部双引号(&#34;&#34;),则无需连接。您只需在php变量周围添加单引号。

3)最好在数据库表中添加主键

4)在body标签中写入连接对象而不是标头标签。

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>

希望它会对你有所帮助: - )