Actualy我知道如何在LIKE
PDO
语句
现在我有一个DB-Table,例如的 foobar的
foobar 包含一个JSON-String,如:
{"firstname":"foo","email":"aaa@aaa.aa","lastname":"bar"}
现在,在我在桌面上调用INSERT之前,我想检查电子邮件是否已被使用。
$pdo->query("SELECT * FROM myTable WHERE foobar LIKE ?", array('%' . $email . '%'));
如您所见,我将电子邮件传递给pdo查询。
注意->query
是我的自定义函数,可以处理一些东西。在这种情况下,知道发生了什么并不重要。
我遇到的问题是:
如果存在上述条目,则无法再添加类似以下内容的电子邮件:
aa@aaa.aa
^^....only two A's
所以我想我可以简单地改变
array('%' . $email . '%')
到
array('%"' . $email . '"%')
但这不起作用。有没有办法检查整个字符串部分?
{ “姓名”: “foo” 的, “电子邮件”: “aaa@aaa.aa”下, “姓氏”: “酒吧”}
答案 0 :(得分:1)
如果您无法将JSON字段分解为自己的列,那么我建议使用JSON column type。它是MySQL的原生代码,对于这种大小的JSON来说速度非常快,并且在命令行上没有像$row->email < $minimumInput->email
那样难以使用。
如果这不是一个选项,我会使用REGEXP
:
jq
这是可以使用的,但几乎没有防弹,并且借用一个优秀的短语,将会在除了琐碎的行集之外的任何事情上谋杀表演。