簡體   English   中英

PHP SQL登錄名區分大小寫

[英]PHP SQL login case sensitive

我正在學習做網站登錄和創建創作。 我可能遇到腳本無法檢查兩個字符串是否大小寫相同的情況。 例如,Foo和foO都返回true。

我當前的PHP腳本是:

//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) > 0) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['username'];
        $_SESSION['SESS_LAST_NAME'] = $member['password'];
        session_write_close();

您可以使用“ COLLATE latin1_general_cs”字符集來區分大寫或小寫。

SELECT * FROM `table` WHERE `your condiction` COLLATE latin1_general_cs;

或者你可以使用

SELECT *  FROM `table` WHERE BINARY `column` = 'value'

如果您在WINDOWS中:可以找到my.ini並更改lower_case_table_names = 0。 如果您使用的是LINUX:可以找到my.cnf並更改lower_case_table_names = 0。

字符集latin1的默認排序規則為latin1_swedish_ci,它不區分大小寫。

您可以在創建數據庫架構時選擇區分大小寫的排序規則,例如latin1_general_cs。 看這個鏈接

https://dba.stackexchange.com/questions/15250/how-to-do-a-case-sensitive-search-in-where-clause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM