首页 > 解决方案 > 如何在 Joomla 3 中对逗号分隔的字段进行 MySQL 查询?

问题描述

我正在尝试在 Joomla 3 模块中进行 MySQL 查询,以查找列中包含特定 id 值的lexicon行。所有字段都是逗号分隔的整数字符串,来自Component Creator. 我不习惯使用 Joomla,所以也许这就是我在这段代码中$results显示为空数组的原因。[]关于我在这里做错了什么有什么建议吗?

/*
Example on table: tab__lexi

id  | lexicon     | dog     | cat
____|_____________|_________|_________
1   | 1,2         | 3,8     | 4
2   | 5,6,9       | 3,2     | 1,3,4,5 
*/
 

$lexiId=5;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('dog', 'cat')));
$query->from($db->quoteName('#__lexi'));
$query->where($db->quote($lexiId) . ' IN ('. $db->quoteName('lexicon').')');
$db->setQuery($query);
$results = $db->loadObjectList();
$res=json_encode($results);

标签: phpmysqljoomla3.0

解决方案


尝试将您的代码从

$query->where($db->quote($lexiId) . ' IN ('. $db->quoteName('lexicon').')');

$query->where( $db->quoteName('lexicon') . ' IN ('. $db->quote($lexiId).')');

所以它会生成这样的查询:

SELECT dog, cat FROM lexi WHERE lixicon IN (5);

但是,如果您的词典列中的数据存储在单行中,则您不能使用 IN 运算符,但您可以使用 LIKE(这会降低您在大型数据集上的性能)

SQL 样例

SELECT dog, cat FROM lexi WHERE lexicon LIKE "%YOUR_VALUE_HERE%"; 

推荐阅读