多个不区分大小写,如mysql

时间:2015-06-12 16:43:04

标签: mysql sql sql-like case-insensitive

我正在尝试创建一个书店搜索字段,该字段匹配书籍标题,副标题和作者列中的关键字。我可以得到一个不区分大小写的语句来工作,但是当我在多列下尝试时它似乎不起作用。任何人都可以帮我找到错误吗?或者有更简单的方法来实现这一目标吗?

    $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");

1 个答案:

答案 0 :(得分:0)

您需要删除LIKE子句中的逗号:

例如,而不是:

LIKE LOWER('%,".$_GET['search'].",%')

这样做:

LIKE LOWER('%".$_GET['search']."%')

否则,您只会匹配逗号包围的项目!

您还应该对表示SQL注入攻击漏洞的注释给予一些认真的信任。