php - 查询 ci 的 mySQL 表中有 JSON 列的位置

标签 php mysql json codeigniter

我正在使用 codeigniter,并且我在列 () 上有一个数字列表(例如 ['1', '2', '12', '42'] tags_json) 的表名 submit,我想检查数字(例如“2”)是否在 tags_json 中,以便显示数据该行的内容。

我试过的代码是:

$this->db->select('*', FALSE);
$this->db->where("JSON_CONTAINS(tags_json,'[2]'");
$Query = $this->db->get('submit');
echo $Query->num_rows();

结果是:

Error Number: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 3

SELECT * FROM submit WHERE JSON_CONTAINS(tags_json,'[2]' IS NULL Filename: controllers/Home.php Line Number: 281

它在 CI 中的表现如何?

最佳答案

我已经找到了解决您问题的方法。使用此代码...

$this->db->select('*');
$this->db->where("JSON_CONTAINS(tags_json, JSON_ARRAY('2'))");
$Query = $this->db->get('submit');
echo $Query->num_rows();

如果没有找到,它将输出10

如果它会给你这个错误

Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 1.

SELECT * FROM submit WHERE JSON_CONTAINS(tags_json, JSON_ARRAY('2'))

这是因为你的json数组无效所以确保你有这个格式

["1", "2", "12", "42"]

或者你可以像这样 [1, 2, 12, 42] 然后调用 JSON_ARRAY(2)

希望对您有所帮助。

关于php - 查询 ci 的 mySQL 表中有 JSON 列的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957752/

相关文章:

php - 从 MySQL 表并发获取任务

mysql - 将平均值加到平均值

javascript - 使用 javascript 读取 jSON 数据

php - 具有相同变量的多个输入

javascript - 从数据库中获取嵌套 JSON 的最佳方法是什么?

javascript - 将日志错误发送到文件

php - 如何使 "foreach"按字母顺序列出项目

mysql - 如何查找mysql数据库的最后更新日期

java - 我如何在 JSONobject 中设置文本数组 0 或 fname 我是使用 JSON 的新手

python - 如何将 JSON 中的推文保存到 Python 3.4 中的 txt 文件?