【问题标题】:PHP MySQL How to fetch xml valuePHP MySQL如何获取xml值
【发布时间】:2018-03-22 17:41:05
【问题描述】:

我正在尝试从数据库中获取 XML 值,但不知道从哪里开始。基本上,我在 mysql 字段类型的文本中有一些 XML,我试图获取的值是“Rachels”,如下所示:

<void property="name">
   <string>Rachels</string>
</void>

我正在使用 mysqli 程序,所以想要那种格式的代码。

到目前为止,我的代码如下所示。此代码获取整个字段,而不仅仅是我希望它获取的那个值。

$blob_query = mysqli_query($dbh8, "SELECT * FROM objstore WHERE obj_id='$characterId' AND type='PLAYER' AND namespace_int='3' ORDER BY obj_id DESC LIMIT 1");
        if($blob_query){
            $blob_row = mysqli_fetch_assoc($blob_query);
            echo $blob_row['data'];
        }

所以我需要从那个 XML 中提取值。提前感谢您的帮助!

【问题讨论】:

标签: php mysql xml


【解决方案1】:

看看 ExtractValue MySQL 函数:https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html#function_extractvalue

它允许您使用 XPath 从 XML 内容中提取值。从你的例子中,它给出了以下内容:

mysql> select * from objstore\G
*************************** 1. row ***************************
data: <void property="name">
   <string>Rachels</string>
</void>
1 row in set (0,00 sec)

mysql> SELECT ExtractValue(data, '//void/string') as EXTRACTED_DATA FROM objstore;
+----------------+
| EXTRACTED_DATA |
+----------------+
| Rachels        |
+----------------+
1 row in set (0,00 sec)

【讨论】:

  • 我想出了这个:$blob_query2 = mysqli_query($dbh8, "SELECT ExtractValue(data, '//void/string') as EXTRACTED_DATA from objstore WHERE obj_id='$characterId' AND type= 'PLAYER' AND namespace_int='3' ORDER BY obj_id DESC LIMIT 1"); $count = mysqli_num_rows($blob_query2); $blob_row2 = mysqli_fetch_assoc($blob_query2); $data2 = $blob_row2['data'];回声“数据:$data2”;但是,它仍然没有给我“Rachels” 另外,有没有办法将 property="name" 考虑在内,所以它会获取那部分 XML? XML其实很大,我只展示了一个例子。
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多