在JSON-String

时间:2016-06-22 16:24:08

标签: php mysql json pdo

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”下, “姓氏”: “酒吧”}

1 个答案:

答案 0 :(得分:1)

如果您无法将JSON字段分解为自己的列,那么我建议使用JSON column type。它是MySQL的原生代码,对于这种大小的JSON来说速度非常快,并且在命令行上没有像$row->email < $minimumInput->email那样难以使用。

如果这不是一个选项,我会使用REGEXP

jq

这是可以使用的,但几乎没有防弹,并且借用一个优秀的短语,将会在除了琐碎的行集之外的任何事情上谋杀表演。