2013-08-22 46 views
0

我想选择从表匹配确切的词,但我有一个问题,即PHP MySQL查询选择匹配精确字

如果行这样的:天使,我没有SELECT * FROM表,其中行=“天使”它成功和第一

信小,以dB为单位的资本,

$r = mysql_fetch_row(mysql_query("SELECT ID 
            FROM Login 
            WHERE Username = 'angel' 
            And Password = 'zxc'")); 
if($r[0]) 
    die("success"); 
else 
    die("failed"); 

In mysql Table 
Username : varchar(50) : Angel 
Password varchar(50) : zxc 

结果应falied

,因为它的天使没有天使

所以它

回答

0

尝试像

SELECT ID 
FROM Login 
WHERE Username = 'angel' COLLATE utf8_bin; 
1

您可以使用BINARY了点。

SELECT * FROM `table` WHERE BINARY `row` = 'angel' 

这将做出区分大小写的匹配。

1

是的,这是由于您的表字段的排序规则。你应该把它设置为区分大小写的排序规则通常与cs后缀像latin1_swedish_cs

0
mysql_query(" 
    ALTER TABLE `Login` 
    CHANGE `Username` `Username` VARCHAR(250) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL 
");  

$r = mysql_fetch_row(mysql_query("SELECT ID FROM Login WHERE Username = 'angel' And Password = 'zxc'")); 
if($r[0]) 
    die("success"); 
else 
    die("failed"); 

现在,它会工作。

+0

你怎么知道在这种情况下,用户名是存储在数据库?它不会总是'ucfirst' –

0

尝试像

SELECT ID 
FROM Login 
WHERE upper(Username) = upper('angel')