我有一个 mysql 表,其中用户列是 varchar。
这适用于 int 类型
$result = mysql_query("SELECT name FROM users WHERE id='$id'");
但是当我尝试匹配 varchar 时,没有返回任何内容。
$result = mysql_query("SELECT name FROM users WHERE user='$username'");
我尝试删除这些值,但仍然一无所获。
有什么建议吗?
最佳答案
我通常使用这样的东西。 (加上一些 sanitizer )
$username = strtolower($username);
$result = mysql_query("SELECT name FROM users WHERE LCASE(user)='{$username}'");
无论他们如何输入,通过使大小写相同,您都会获得用户名。
由于您使用的是 =
,因此它必须完全匹配。否则你会使用LIKE
。
我上面提供的代码将返回用户名的精确匹配。
此代码将强制 $username
全部小写,然后我们可以使用 LCASE
对 MySQL 执行相同的操作。现在您可以进行相同的匹配。
您可能遇到的问题是 userName
与 UserName
甚至 UsErNaMe
不同。确保在进行完全匹配时大小写也相同。
关于PHP 查询不返回带有 varchar 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820715/