在Mysql查询中使用COLLATE时出错

时间:2016-05-05 23:31:19

标签: php mysql

我正在尝试在MySQL查询中使用COLLATE子句,但我收到错误。 这是我的代码:

<?php    

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

    $members = User::find_by_sql($sql);

?>

如果我取出COLLADE子句,查询就能正常工作。 语法有问题吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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 Database Character Sets and Collation

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