MySQL小写来比较数据

Dyl*_*oss 9 php mysql

我想从数据库中的一行获取内容,并将其小写版本与用户输入的小写版本进行比较,以检查它是否存在于数据库中:

"SELECT `id` FROM `user_accounts` WHERE `username` = '".strtolower($username)."'"
Run Code Online (Sandbox Code Playgroud)

如何从mysql获取小写的用户名?

And*_*ong 26

你使用lower(username)http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lower

"SELECT `id` FROM `user_accounts` WHERE LOWER(`username`) = '".strtolower($username)."'"
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 8

如果您确实希望大小写无关紧要,那么您应该将列的排序规则设置为不区分大小写.

mysql> SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT 'foobar' = 'FoObAr';
+---------------------+
| 'foobar' = 'FoObAr' |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.01 sec)

mysql> SELECT 'fOoBaR' = 'FoObAr';
+---------------------+
| 'fOoBaR' = 'FoObAr' |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT 'fOoBaR' = 'FoObAz';
+---------------------+
| 'fOoBaR' = 'FoObAz' |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)


Jak*_*ake 5

如上所述,理想情况下这应该有效,

$query = "SELECT `id` 
          FROM `user_accounts` 
          WHERE LOWER(`username`) = '".strtolower($username)."'";
Run Code Online (Sandbox Code Playgroud)

但如果“user_accounts”表中的“username”列定义为 VARBINARY,则它将不起作用。原因是VARBINARY要求数据区分大小写