【发布时间】:2021-03-07 07:26:29
【问题描述】:
大家好(希望标题是对的,我的英语有时会生锈)
我做了一个搜索功能,它适用于我的“代码”信息,我的公司名称,但我需要搜索 json 条目中的电子邮件,我是这样做的:
$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . $this->table . ' AS s
WHERE ((s.code LIKE :q)
OR (s.company_name LIKE :q)
OR (JSON_EXTRACT(s.contacts, "$.email") LIKE :q))';
我的错误在哪里?
【问题讨论】:
-
嗯,你能分享一下 JSON 的示例数据吗?一行就足够了,你可以掩盖真正的价值,重要的是结构。
-
当然,[{"lastname":"Bonnot","firstname":"Jean","email":"justinbridou@live.fr","phone1":"0675421357"}]
-
我认为它失败了,因为您的 JSON 在一个数组中,而不是在
$.email寻找的“顶级”级别 -
好的,所以我的电子邮件在第二级,我该怎么办?也许我应该为我的“s.contacts”做一个 foreach ?
-
似乎
contacts真的应该是另一张桌子。会为您省去很多这样的麻烦。