我有一个mysql表,其中用户列是varchar。
这适用于int类型
$result = mysql_query("SELECT name FROM users WHERE id='$id'");
但是当我尝试匹配varchar时,不会返回任何内容。
$result = mysql_query("SELECT name FROM users WHERE user='$username'");
我试图删除这些值,但仍然没有。
有什么建议吗?
答案 0 :(得分:1)
我通常使用这样的东西。 (加上一些消毒)
$username = strtolower($username);
$result = mysql_query("SELECT name FROM users WHERE LCASE(user)='{$username}'");
这将为您提供用户名,无论他们如何通过使案例相同来键入它。
由于您使用=
,因此必须完全匹配。否则你会使用LIKE
。
我上面提供的代码将返回用户名的完全匹配。
此代码将强制$username
全部小写,然后我们可以使用LCASE
对MySQL执行相同的操作。现在你可以拥有相同的匹配。
您可能遇到的问题是userName
与UserName
或UsErNaMe
不同。确保当你完全匹配时,情况也一样。