gpt4 book ai didi

php - MySQL 不区分大小写的查询,带空格的字符串

转载 作者:行者123 更新时间:2023-11-29 12:14:13 26 4
gpt4 key购买 nike

所以我试图做一个相当简单的任务,使用例如将字符串与 mysql 表行/条目进行比较。

SELECT * FROM table_name WHERE $string = table_column.

我的问题是,它正在搜索并保持区分大小写。

The string: "A Long String"
The database entry "A Long String"

我的表格已整理: latin1_swedish_ci 应该在不区分大小写的情况下进行搜索(就像我的其余查询一样),我相信由于字符串包含空格,因此可能是问题所在,它只是查看第一个字符的大写。

我尝试在查询中使用“上”和“下”比较以及使用“LIKE”,我也尝试使用 REPLACE 删除空格,但我可能做错了,不完全确定。但它似乎永远找不到正确的条目,除非我按照数据库中的原样键入它。

任何建议都会很酷!

$result = mysqli_query($db, "SELECT * FROM character_information WHERE 
(reference LIKE '".$origin_name."' AND char_name LIKE '".$char_name."')
OR
(lower(reference) LIKE '".$origin_name."' AND lower(char_name) LIKE '".$char_name."')
OR
(upper(reference) LIKE '".$origin_name."' AND upper(char_name) LIKE '".$char_name."')
AND
(char_gender = '".$char_gender."')");

再试一次?

$result = mysqli_query($db, "SELECT * FROM character_information WHERE 
reference = '".$origin_name."' AND char_name = '".$char_name."' AND char_gender = '".$char_gender."'");

我知道这是完全错误的,我假设不应该以这种方式使用 REPLACE,应该在 UPDATE 或 INSERT 中使用?不管怎样,你可以看到我试图通过删除所有内容中的空白来做什么。

$origin_name = str_replace(' ', '', $origin_name);
$char_name = str_replace(' ', '', $char_name);

$result = mysqli_query($db, "SELECT * FROM character_information WHERE
( (REPLACE(reference, ' ', '' )) LIKE '".$origin_name."' AND (REPLACE(char_name, ' ', '' )) LIKE '".$char_name."%')
AND
(char_gender = '".$char_gender."')");

最佳答案

不需要同时进行上下比较。如果您将数据库中的列和搜索词作为同一查询的一部分转换为其中之一,您将确保不区分大小写。

mysqli_query($db, 'SELECT * FROM table_name WHERE LOWER(table_column) = LOWER(\'' . $value . '\')');

或者检查列是否包含该值而不是等于该值:

mysqli_query($db, 'SELECT * FROM table_name WHERE LOWER(table_column) LIKE LOWER(\'%' . $value . '%\')');

关于php - MySQL 不区分大小写的查询,带空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30124092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com