php - 自定义查询中的 Joomla 3 Zoo 组件 JSON 提取

标签 php mysql json joomla

我正在使用 Zoo 组件来存储项目,刚刚将 Joomla 从 1.5 版本移动到 3 版本,Zoo 组件更改了其格式以保存项目

在之前的版本中,zoo组件使用XML格式将数据保存在数据库中,现在在新版本中,它们使用JSON格式。

现在,让我来谈谈这个问题:

我开发了自定义模块来获取查询如下的数据:

SELECT DISTINCT id, name FROM #__zoo_item WHERE application_id=1 and state=1 and type='abo' AND ExtractValue(elements,'/elements/relateditems[@identifier="9264aa8aa-6b39-4ecc-969a-f17da2688a5c"]/item')=24 ORDER BY ExtractValue(elements,'/elements/radio[@identifier="3dd960814e-b3f9-4ca2-abdb-070d0f51e7b9"]/option') ASC, FIELD(ExtractValue(elements,'/elements/radio[@identifier="86c0c108-8a31-48b9-badb-857ss7f359c1b7"]/option'),'ja','regal','ntein') ,ExtractValue(elements,'/elements/radio[@identifier="3960814e-b3f9-4ca2-abdb-070d0f51epp7b9"]/option') DESC

这里的查询使用了 MySQL 的 ExtractValue 函数来匹配从 XML 中提取的值。

这是 XML 格式:

<?xml version="1.0" encoding="utf-8"?>
<elements>
<select identifier="9d534d17-d6d9-4671-a7d1-0b1f8ec71f07">
  <option><![CDATA[salt]]></option>
</select>
<relateditems identifier="9264aa8aa-6b39-4ecc-969a-f17da2688a5c">
  <item><![CDATA[24]]></item>
</relateditems>
<text identifier="b44baf4c-bbb0-4410-a12c-23ec3b7ba5d6">
  <value><![CDATA[]]></value>
</text>
<text identifier="c3903e1e-bc09-4708-bf8f-dc765a84ccd4">
  <value><![CDATA[]]></value>
</text>
<image identifier="4079ccd8-04df-41fd-b41e-52c23351a215">
  <file><![CDATA[test.png]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[80]]></height>
</image>
<radio identifier="86c0c108-8a31-48b9-badb-857ss7f359c1b7">
  <option><![CDATA[ja]]></option>
</radio>
<radio identifier="3960814e-b3f9-4ca2-abdb-070d0f51epp7b9">
  <option><![CDATA[0]]></option>
</radio>
</elements>

现在,问题是如何使用查询来检查 JSON 格式中匹配的提取值。另外,MySQL 版本是 5.5,因此最新的 5.7 JSON 函数无法工作。

这是 JSON 格式:

{
    "9264aa8aa-6b39-4ecc-969a-f17da2688a5c":  {
        "item":  {
                "0": "8665"
        }
    },
        "50b019d0-6e30-4a27-a46c-68dbe5ade18b":  {
        "0":  {
            "value": "GRUNDGEB\u00dcHR: CHF 59.00|\nANRUFE: Unlimitiert in der Schweiz|\nSMS\/MMS: Unlimitiert in der Schweiz|\nINTERNET 4G: Unlimitiert in der Schweiz|"
        }
    },
    "3dd960814e-b3f9-4ca2-abdb-070d0f51e7b9":  {
        "option":  {
            "0": "salt"
        },
        "select": "1"
    },
    "26112e4c-83c5-4e38-806b-fccfb7f8aa69":  {
        "votes": 0,
        "value": 0
    },
}

有人知道如何 checkin JSON 数据吗? MySQL 有什么函数可以用吗?

最佳答案

<?php
$db = JFactory::getDbo();   
 $query = $db->getQuery(true);
 $query->select($db->quoteName(array('64ccc68f-4af3-4c02-8c0f-8ec5977bacb2')))
  ->from($db->quoteName('#__zoo_item'))
  ->where($db->quoteName('application_id') . ' = 1 AND '. 
          $db->quoteName('state')  . ' = 1 AND '. 
          $db->quoteName('type')  . ' = ' $db->quoteName('handy'));

  $db->setQuery($query);  
  $results = $db->loadObjectList(); 
?>

关于php - 自定义查询中的 Joomla 3 Zoo 组件 JSON 提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432180/

相关文章:

json - 如何在 Dart 中处理 JSON

javascript - 如何在php中调用bootstrap modal

json - Grails 2.3 Controller 方法返回 JSON 在单元测试中返回 null

php - 如何删除 anchor 链接中的基本网址(codeigniter)?

java - sql 在简单查询中抛出错误

php - 左连接中的Mysql索引

mysql - 使用 Sequelize 和 mysql 加密密码列

java - Android JSON通讯

php - DateTime 使用不正确的时区

php - 无效的货币代码 - 在 woocommerce 中进入结帐页面时出错