在Mysql查询中使用COLLATE时出错


Getting an error when using COLLATE in a Mysql query

我试图在MySQL查询中使用COLLATE子句,但遇到了一个错误。这是我的代码:

<?php    
$sql = "SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE uf8_general_ci";
    $members = User::find_by_sql($sql);
?>

如果我去掉COLLADE子句,查询将正常工作。语法有问题吗?

谢谢!

SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE uf8_general_ci

UF8是什么排序规则?打字错误很容易被忽视。

必须是:

SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE utf8_general_ci

此外,请确保您使用的排序规则与您的字符集兼容。(例如,UTF8的排序规则与UTF8MB4不兼容)

使用此语句检查您的字符集和排序规则(来自MySQL数据库字符集和排列规则)

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';