mysql 中的多个不区分大小写的比较
Multiple case insensitive like comparisons in mysql
我正在尝试创建一个书店搜索字段来匹配书名、副标题和作者列中的关键字。我可以让一个不区分大小写的 like 语句起作用,但是当我在多个列下尝试时它似乎不起作用。谁能帮我找出问题所在?或者有更简单的方法来完成这个吗?
$getbooks= mysql_query("SELECT * FROM books WHERE (
LOWER(title) LIKE LOWER('%,".$_GET['search'].",%')
OR LOWER(author) LIKE LOWER('%,".$_GET['search'].",%')
OR LOWER(subtitle) LIKE LOWER('%,".$_GET['search'].",%')
)
AND status='1'
ORDER BY id DESC");
您需要删除 LIKE 子句中的逗号:
例如,而不是:
LIKE LOWER('%,".$_GET['search'].",%')
这样做:
LIKE LOWER('%".$_GET['search']."%')
否则,您将只匹配被逗号包围的项目!
您还应该认真相信表明 SQL 注入攻击漏洞的评论。
我正在尝试创建一个书店搜索字段来匹配书名、副标题和作者列中的关键字。我可以让一个不区分大小写的 like 语句起作用,但是当我在多个列下尝试时它似乎不起作用。谁能帮我找出问题所在?或者有更简单的方法来完成这个吗?
$getbooks= mysql_query("SELECT * FROM books WHERE (
LOWER(title) LIKE LOWER('%,".$_GET['search'].",%')
OR LOWER(author) LIKE LOWER('%,".$_GET['search'].",%')
OR LOWER(subtitle) LIKE LOWER('%,".$_GET['search'].",%')
)
AND status='1'
ORDER BY id DESC");
您需要删除 LIKE 子句中的逗号:
例如,而不是:
LIKE LOWER('%,".$_GET['search'].",%')
这样做:
LIKE LOWER('%".$_GET['search']."%')
否则,您将只匹配被逗号包围的项目!
您还应该认真相信表明 SQL 注入攻击漏洞的评论。