php - 检查mysql中的json编码数组中是否存在值

标签 php mysql json

我正在使用 Mysql 触发器来对我的数据库执行某些操作。在任何事情之前,我想检查我的配置表中的 json_encode 字符串中是否存在一个值,然后继续运行触发器。 我的配置表由 php 脚本处理,如下所示:

-------------------------------------------
| config_name | config_value              |
-------------------------------------------
| target_id   | ["1","16","18","22","37"] |
-------------------------------------------

在 php 中我们可以使用: 如果 in_array(json_decode(config_value)) 和 ...

但我的问题出在不支持 in_array 和 json_decode 的 Mysql 语法中

如何检查我的值是否存在于 Mysql 触发器的“配置值”中?

最佳答案

如何解决这个问题

如果您将 JSON 存储在 mysql 中,请确保升级到 mysql 5.7,然后您可以使用 JSON functions 的范围。可用的。在您的特定情况下,您可以这样做

   SELECT * FROM my_table WHERE JSON_SEARCH(config_value,"one", "17") IS NOT NULL;

你绝对应该做的事

您的数据有问题。如果你发现你总是在搜索一个 JSON 字段,那真正意味着你的表应该被规范化。

更新:第 2 部分,根据@Sammitch 的建议更改了标题

关于php - 检查mysql中的json编码数组中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132714/

相关文章:

mysql - 或者通过 Doctrine2 按不固定数量的关键字进行搜索

尝试截断表时出现 MySQL 错误

json - 如何使用条件逻辑将完全限定的 Azure 资源 ID 作为原始 json 传递?

javascript - Angular JS 和 Symfony2

php - 链接在 PHP 中不起作用或无法正确显示

PHP 多维数组返回空子数组

mysql:查询显示前一天的数据在新月份时不起作用

javascript - 如何在从根遍历到json树的目标 Node 时插入键?

php - Symfony2 禁用选择

php - Google Maps API V3 KML 图层不显示