Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql查询选择匹配精确单词_Php_Mysql - Fatal编程技术网

php mysql查询选择匹配精确单词

php mysql查询选择匹配精确单词,php,mysql,Php,Mysql,我想从表中选择匹配的精确单词,但遇到了一个问题 如果row-like:Angel和我确实从表中选择了*,其中row=“Angel”表示成功,并且是第一个 字母很小,大写 $r = mysql_fetch_row(mysql_query("SELECT ID FROM Login WHERE Username = 'angel'

我想从表中选择匹配的精确单词,但遇到了一个问题

如果row-like:Angel和我确实从表中选择了*,其中row=“Angel”表示成功,并且是第一个

字母很小,大写

$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
结果应该是错误的

因为它是天使而不是天使

所以任何解决方案都可以试试这个

$r = mysql_fetch_row(mysql_query("SELECT ID FROM Login WHERE  
            Password = 'zxc' AND Username collate latin1_general_cs = 'angel'"));
阅读并试着像

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

您可以使用
BINARY
进行此操作

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

这将使匹配区分大小写。

是的,这是由于表字段的排序规则。您应该将其设置为区分大小写的排序规则,通常后缀为
cs
latin1\u-swedish\u-cs

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");
现在它可以工作了。

试试看

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

您如何知道在何种情况下用户名存储在DB中?它不会总是
ucfirst