混合 PHP/MySQL 解决方案:
$result = mysql_query("
SELECT *
FROM example_orders
WHERE LOWER(buyer_email) = '" . strtolower($useremail) . "';
") or die(mysql_error());
它所做的是将比较的两边都转换为小写。这不是很有效,因为使用LOWER
会阻止 MySQL 使用索引进行搜索。
更高效的纯 SQL 解决方案:
$result = mysql_query("
SELECT *
FROM example_orders
WHERE buyer_email = '$useremail' COLLATE utf8_general_ci;
") or die(mysql_error());
在这种情况下,我们强制使用不区分大小写的排序规则进行比较。如果该列首先具有不区分大小写的排序规则,则您不需要它。
下面是如何更改列排序规则,正如 Basti 在评论中所建议的那样:
ALTER TABLE `example_orders`
CHANGE `buyer_email` `buyer_email` VARCHAR( 100 )
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
如果您选择这样做,您可以运行不带COLLATE utf8_general_ci
.