0

我有这样的背景:

CREATE TABLE `atdees` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `params` text NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `atdees` (`id`, `params`) VALUES
(1,'{"field282":"0","field347":"1"}'),
(2,'{"field282":"0","field347":"0"}'),
(3,'{"field282":"0"}');

我必须从表中提取以下行:

  • atdee 必须具有字符串 '"field282":"0"'
  • atdee 有字符串 '"field282":"0"' 但没有字符串 '"field347":"0"'
  • atdee 同时具有字符串 '"field282":"0"' 和 '"field347":"0"'

换句话说,我必须提取 Id 2 和 3。

谢谢你。

Ps:对不起我的英语,我不是母语人士;)

编辑:我找到了我的查询

SELECT id
FROM atdees
WHERE
  INSTR(`params`, '"field282":"0"') > 0 and
  ( params LIKE '%"field347":"0"%' OR 
    INSTR(`params`, '"field347"') = 0 )
4

1 回答 1

0

如果它只是从数据库中获取数据,那么你可以使用这样的东西:

$db = JFactory::getDbo();

$query = $db->getQuery(true);

$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__atdees'));
$query->where($db->quoteName('params') . " = " . $db->quote('"field282":"0"') . "OR" . $db->quote('"field347":"0"'));

$db->setQuery($query);

$results = $db->loadObjectList();

foreach ( $results as $result ) {
    echo "<p>" . $result->id . "</p>";
}

不确定数据库表是否用于 Joomla 扩展,但如果是,请将其保留#__atdees在您的查询中,否则更改为atdees

希望这可以帮助

于 2013-11-08T11:31:31.250 回答