我正在尝试在MySQL查询中使用COLLATE子句,但我收到错误。 这是我的代码:
<?php
$sql = "SELECT * FROM users WHERE first_name LIKE '%" . $name ."%' COLLATE uf8_general_ci";
$members = User::find_by_sql($sql);
?>
如果我取出COLLADE子句,查询就能正常工作。 语法有问题吗?
谢谢!
答案 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';