Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-不区分大小写的搜索_Php_Mysql_Search_Letters - Fatal编程技术网

Php MySQL-不区分大小写的搜索

Php MySQL-不区分大小写的搜索,php,mysql,search,letters,Php,Mysql,Search,Letters,构建我的搜索引擎,让用户搜索三个变量$Title、$Text和$Number。。。 当用户搜索时,无论用户在$query中键入的大小写类型(小写或大写)如何查找所有结果 $query = trim ($query); $raw_results = mysql_query("SELECT * FROM posts WHERE (`Number` LIKE '%".$query."%') OR (`Title` LIKE '%".$query."%') OR (`Text` LIK

构建我的搜索引擎,让用户搜索三个变量$Title、$Text和$Number。。。 当用户搜索时,无论用户在$query中键入的大小写类型(小写或大写)如何查找所有结果

$query = trim ($query);

$raw_results = mysql_query("SELECT * FROM posts
        WHERE (`Number` LIKE '%".$query."%') OR (`Title` LIKE '%".$query."%') OR (`Text` LIKE '%".$query."%') ") or die(mysql_error());
(非二进制字符串)默认情况下。

不区分大小写

支持的排序规则列表如下:

您可以使用mysql函数:

$query=strtolower($query); //Query to lower case
$raw_results = mysql_query("SELECT * FROM posts
    WHERE (LOWER(`Number`) LIKE '%".$query."%') OR (LOWER(`Title`) LIKE '%".$query."%') OR (LOWER(`Text`) LIKE '%".$query."%') ") or die(mysql_error());

但是,php中的mysql函数已被弃用,您应该使用mysqli而不是mysql。

我在自己的数据库中为一家公司做了一件事,就是使用php中的strtoupper()函数使所有内容都大写(特别是出于个人安全原因)。如果在希望不区分大小写的字段中使用utf8\u ci排序规则,也会有所帮助。

不推荐使用
mysql\uu*
函数(请参阅)。此外,我看不到您使用
mysql\u real\u escape\u string
%
的所有实例。不过,这个问题与查询有关,而不是与调用查询的方法有关。@CaptainFord:这就是我将我的备注作为注释发布的原因。取决于默认的排序规则。请参阅Mchl答案中的链接。这将删除文本中的所有格式,因此对于标题之类的内容,这是一个糟糕的解决方案。此代码段不提供任何防止注入攻击的保护。@mickmackusa,问题中的代码段也不提供任何保护。问题是如何处理不区分大小写的搜索,答案集中在这一点上。也有人可能会说,
mysql.*
api在php5中被弃用,在php7中被删除,但这也不是问题的范围。事实上,这两个问题已经在问题的评论中得到了解决:)问题有错误的代码是可以的(我们希望老年退休金计划将他们的尝试作为对志愿者的一种尊重,提供背景,并潜在地缩小问题的范围。另一方面,答案应该包含最佳实践和高质量的见解。如果你有时间改进这个旧答案,请这样做是为了更好。我最初的评论只是警告复制意大利面食开发人员不应该复制意大利面食这个答案。
$query=strtolower($query); //Query to lower case
$raw_results = mysql_query("SELECT * FROM posts
    WHERE (LOWER(`Number`) LIKE '%".$query."%') OR (LOWER(`Title`) LIKE '%".$query."%') OR (LOWER(`Text`) LIKE '%".$query."%') ") or die(mysql_error());