簡體   English   中英

Php Sql 使 select 語句不區分大小寫

[英]Php Sql making select statement case insensitive

所以我基本上試圖檢查用戶名是否存在,但問題是人們通過改變大寫來冒充他人我需要防止我閱讀一些答案,但他們是 sql 中的“LIKE”運算符而不是

SELECT * FROM users WHERE nick=? LIMIT 1

我也可以在不同的大寫上使它返回 true 示例:數據庫上存在測試,但如果用戶嘗試注冊 testST 它應該返回它存在或 tEsT

[數據庫]

1

我試過這樣做:

$user_check_query = "SELECT * FROM users WHERE nick COLLATE utf8_bin = ? LIMIT 1";
$dts = $db->prepare($user_check_query);
$dts->bind_param('s', $nick);
$dts->execute();

它仍然沒有幫助。

嘗試使用二進制排序規則:

SELECT * 
  FROM users 
  WHERE username COLLATE utf8_bin = 'NicK'

如果您的列已經有不區分大小寫的排序規則,那么查詢應該沒問題,如果區分大小寫,您可以更改查詢

SELECT * FROM users WHERE lower(username) =lower('nick') LIMIT 1

但要停止這種情況,您需要對該列進行唯一約束:

alter table users 
add constraint unique_usernames UNIQUE (username) 

考慮排序規則不區分大小寫。

暫無
暫無

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

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