【问题标题】:Search query, capital letters [duplicate]搜索查询,大写字母 [重复]
【发布时间】:2013-09-24 09:43:46
【问题描述】:

有人可以帮我解决这个问题吗?表格需要区分大写字母和普通字母。

$raw_results = mysql_query("SELECT * FROM product
            WHERE (`naam` LIKE '%".$query."%') OR (`titel` LIKE '%".$query."%') OR (`druk` LIKE '%".$query."%')") or die(mysql_error());

字符集是 latin1_bin

【问题讨论】:

  • 极端 SQL 注入警报
  • “表格”,你向我们展示了一个查询?
  • 对不起,我改了;)

标签: php forms search


【解决方案1】:

你可以在 mysql 中使用UPPER

$raw_results = mysql_query("SELECT * FROM product
            WHERE (UPPER(naam) LIKE UPPER('%".$query."%')) OR (UPPER(titel) LIKE UPPER('%".$query."%')) OR (UPPER(druk) LIKE UPPER('%".$query."%'))") or die(mysql_error());

【讨论】:

  • 无效使用LIKE '%".UPPER($query)."%' 或您的固定LIKE '%UPPER(".$query.")%'。函数应该在字符串LIKE UPPER('%".$query."%')之外。
  • 对此表示感谢和抱歉。
  • 是的,它现在正在工作。谢谢!
  • 可以回答这个问题..stackoverflow.com/q/56066980/11065582
【解决方案2】:

这取决于您在字段中使用的排序规则。使用默认的latin1_general_ci 排序规则(或类似的_ci-ended)比较和字符串函数将不区分大小写。

所以,您有两个选择。首先 - 在您的 PHP 应用程序中使用 strtolower() 或在 MySQL 本身中使用 LOWER() - 将您的搜索字符串转换为小写(即使它们独立于其原始内容大小写)。其次 - 对包含您的数据的字段使用相应的排序规则。比我已经提供的更多信息 - case sensitivity manual page

【讨论】:

    【解决方案3】:

    使用strtolower 将所有查询小写,然后进行搜索。

    这样的东西,所以它会匹配所有。

    $query=strtolower($query);
    $raw_results = mysql_query("SELECT * FROM product
                WHERE (`naam` LIKE '%".$query."%') OR (`titel` LIKE '%".$query."%') OR (`druk` LIKE '%".$query."%')") or die(mysql_error());
    

    【讨论】:

    • 应使用 mb_strtolower() 而不是 strtolower
    • 我不认为它们有什么不同。
    • ofc 他们这样做,例如:echo strtolower('Š') . mb_strtolower('Š'); 将输出Šš。但是,是的,这取决于 OP 将使用哪种字符集。
    • 字符集是 latin1_bin
    • @Glavić,+1 解释。
    【解决方案4】:

    全部转换成小写或大写都可以

    $raw_results = mysql_query("SELECT * FROM product
                WHERE (strtolower(naam) LIKE '%".strtolower($query)."%') OR (strtolower(titel) LIKE '%".strtolower($query)."%') OR (strtolower(druk) LIKE '%".strtolower($query)."%')") or die(mysql_error());
    

    【讨论】:

    • strtolower 不是 mysql 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多