1

在 MySQL 中,我使用 PHP 的 json_encode 将数据存储在“jsonValues”字段中:

{"product_category":[[{"category":["28"]},{"product":["16","22","64"]}]]}

通过 PHP,我想通过编写以下查询来获取数据:

SELECT * FROM `dbTable` 
WHERE JSON_CONTAINS(jsonValues, '"category":["28"]');

但是,它显示错误

3141 - 函数 json_contains 的参数 2 中的 JSON 文本无效:“文档根不能跟随其他值。” 在第 10 位。

4

4 回答 4

3

您是否尝试过像 mysql 文档那样在搜索词周围添加大括号?

SELECT * FROM `dbTable` WHERE JSON_CONTAINS(jsonValues, '{"category":["28"]}');
于 2018-08-17T06:18:09.047 回答
1

它在编写以下代码后返回该行:

SELECT * FROM `dbTable` WHERE JSON_CONTAINS(jsonValues, '{"category":["28"]}', '$.product_category');
于 2018-08-17T06:38:37.013 回答
1

如果上述方法都不适合您,请尝试下面的代码,它应该可以工作。

SELECT * FROM数据库表 WHERE JSON_CONTAINS(jsonValues, '{"product_category": [[{"category": ["28"]}]]}');

于 2018-08-17T06:48:57.473 回答
0

我遇到了同样的问题,我在数据库中保存数据如下,

$id = '1';
json_encode(array($id)); //in DB it stores like this => ["1"]

我把它改成了

$id = '1';
json_encode(array(intval($id))); //in DB it stores like this => [1]

然后这个查询完美地工作。

Select * from table where WHERE JSON_CONTAINS(json_col, '$id');

我希望它将来对某人有所帮助。

于 2021-08-29T13:17:21.810 回答