无法通过PHP从XML数据库获取记录

时间:2013-12-21 18:19:58

标签: php xml

我遇到了通过PHP从XML数据库中恢复记录的问题。

XML文件中有许多名为“”的元素,彼此具有我从PHP调用的名为“id”的属性。 当我输入除数字“1”之外的任何数字时,它不起作用。

以下是我收到的错误消息。

  

注意:未定义的变量:quest2 in   第58行的C:\ xampp \ htdocs \ game \ data \ quest_query.php注意:未定义   变量:C:\ xampp \ htdocs \ game \ data \ quest_query.php中的info_quest   第58行注意:未定义的变量:time_end in   第58行的C:\ xampp \ htdocs \ game \ data \ quest_query.php

我因为“if”语句而被接受这些错误。 这是代码:

<?php

$xmlStringFile = '<?xml version="1.0" standalone="yes"?>
<quests>
 <quest id="1">
        <ID>1</ID>
        <QUEST>Katakomby pod městem</QUEST>
        <INFO>Asi nevíte že pod naším krásným městem je spousta tajných chodem, které pořádně nikdo neproskoumal. Jsou tu již dlouhá staletí a údajně naši předci v nich ukryli zlatý poklad.</INFO>
        <TIME>780</TIME><!-- 780 - 13 minut -->
        <ITEMS1></ITEMS1>
        <XPMIN>180</XPMIN>
        <MONEY>800</MONEY>
        <LVL>1</LVL>
    </quest>

    <quest id="2">
        <ID>2</ID>
        <QUEST>Oprava zříceného mostu</QUEST>
        <INFO>Před několika dny strhla záplava starý dřevěný most u radnice. Pomoz jej opravit.</INFO>
        <TIME>7200</TIME>
        <ITEMS1></ITEMS1>
        <XPMIN>250</XPMIN>
        <MONEY>250</MONEY>
        <LVL>4</LVL>
    </quest>
</quests>';

  $quests = new SimpleXMLElement($xmlStringFile);

  if($_GET['quest'] == $quests->quest["id"]){
        $quest2 = $quests->quest->QUEST;
        $info_quest = $quests->quest->INFO;
        $time_end = $quests->quest->TIME;
  }
  // echo $idquest . $quest2 . $info_quest . $time_end;
  echo $_GET['quest'] . $quest2 . $info_quest . $time_end;

?>

在此先感谢,非常感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

使用xpath选择您需要的<quest>

$quests = simplexml_load_string($x); // assume XML in $x

$id = 2;
$results = $quests->xpath("/quests/quest[@id='$id']");

if (isset($results[0])) $results = $results[0];
else exit("no match");

echo $results->QUEST;

看到它有效:http://codepad.viper-7.com/KJMIAl