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 注入攻击漏洞的评论。