上次我发布了一个关于使用php搜索json数据的问题。在测试了脚本之后,我想尝试其他的东西。使用mysql搜索数据。因为它比使用php脚本循环任何东西都要快。我正在用phpmyadmin编写脚本,这为我生成了下一个php脚本。但是某处有一只虫子(悲伤)
"SELECT *
FROM `bigtree_pages`
WHERE `resources` like \'%\"XNCatDesc\": \"%?%\' and `resources` like \'%\"Brand\": \"%?%\' and `resources` like \'%\"ItemDesc\": \"%?%\'"
我想给出三个值。分类、品牌和项目描述(名称)。但这是个错误。
sql语法有错误;请检查与您的mariadb服务器版本对应的手册,以了解在“'%”xncatdesc“:”%'41“%\”和“%”附近使用的正确语法 resources
如“%”“brand”:“%”无“%”和“reso”
老实说,我真的不知道该把我的%符号放在哪里。例如。我的json里有这个 "Brand": "Bullet",
价值需要 Brand
(因为我们正在搜索品牌)品牌是子弹。编写此查询的最佳方法是什么?
1条答案
按热度按时间r1zk6ea11#
在
LIKE
表达式在准备好的查询中,需要形成整个表达式并将其用作参数。否则,您会遇到一些问题,就像在值中插入引号一样。如果您正在使用mysqli
,尝试这样的操作(假设您的连接被调用$conn
您要搜索的值被称为$categorie
,$brand
以及$itemdesc
):然而,你会遇到的问题是,因为
%
围绕搜索值(例如。$brand
)在查询中,搜索brand = X
例如,你可以匹配所以你应该使用正则表达式。
如果您运行的是MySQL5.7或更高版本,最好使用内置的
JSON_EXTRACT
功能: