我如何在 Joomla 3 中对逗号分隔的字段进行 MySQL 查询?

How do I make a MySQL query on a comma-separated field in Joomla 3?

我试图在 Joomla 3 模块中进行 MySQL 查询,以查找 lexicon 列中包含特定 ID 值的行。所有字段都是逗号分隔的整数字符串,来自 Component Creator 中的多个 select 元素。我不习惯使用 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);

尝试将您的代码从

$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%";