php - 如何在 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);
解决方案
尝试将您的代码从
$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%";
推荐阅读
- arangodb - Combining relevance sorting with word prefix searching in ArangoDb?
- regex - 无论顺序如何,如何在字符串中查找匹配模式?
- python - Python 初始化线程的最佳方法是什么?
- html - 如何在点击时提交放置在页面中的表单?
- sql - 如何在 XQuery 中使用参数?
- javascript - 努力显示 mongoDB 对象中的所有项目
- vue.js - Vue-cli VS 模块捆绑器和任务运行器
- rest - 我正在 MarkLogic 中安装 REST 扩展来查询视图。如何设计此 GET 请求,以便它可以采用 > 和 < 等条件作为日期?
- c++ - 如何绘制到目标纹理大于屏幕分辨率的帧缓冲区?
- windows - 如何修复 npm/yeoman 安装错误:TypeError: cannot read property 'proxy' of undefined