我有一个这样的MySQL请求:
$q = "SELECT * FROM `shops` WHERE `shop_name` LIKE '%".$name."%';";
它搜索与正则表达式模板匹配的记录。但当它什么都没发现时,它会返回所有记录。但我希望它在这种情况下不返回任何内容。怎么做?
答案 0 :(得分:1)
您可以使用RLIKE operator of MYSQ L
$q = "SELECT * FROM `shops` WHERE `shop_name` RLIKE '%".$name."%';";
答案 1 :(得分:1)
在您的情况下,我认为,您将一个epmty字符串发送到$ name。
因为当模式不匹配时,LIKE不会发送所有集合。
如果$ name为空,则查询将为" SELECT * FROM shops
WHERE shop_name
LIKE' %%';"。此查询将从shops
重新检索所有集。
在执行查询之前,您需要检查$ name是否为空字符串,或者使用以前的建议(RLIKE)。