懶的更新到blogger了

本站2010年10月以後的,都更新到google docs上了:
連結在這裡

2006/09/17

[心得]MySQL select 不分大小寫的!?

最近寫了一個報名的小程式,當然也開了一些帳號(英文小寫)。
順便也在設定檔裡加入中文的對應,

$ETOC = array(
'aaa'=>'單位A',
'bbb'=>'單位B',
'ccc'=>'單位C'
);

這樣可以使用 $ETOC['aaa'] 的方式把 單位A 顯示出來,
(當然 $user = 'aaa'; 的話,可以用 $ETOC[$user] )

可是用了2天後,發現有個單位的中文名稱是空白的,才覺得奇怪,
就進去MySQL資料庫看看,發現該單位登入時,帳號是 AAA (大寫)
奇怪…大寫時,在帳號密碼檢查的select時竟可以select到,
馬上試
SELECT * FROM `my_table` WHERE `user`='aaa';
SELECT * FROM `my_table` WHERE `user`='AAA';
SELECT * FROM `my_table` WHERE `user`='aAa';
真的都可以 select 到,這時才第一次發現它是不分大小寫的,
看來我還太嫩了!!(說不定對大家來說都是常識了)

好吧,那就把每個人輸入的帳號一律都變成小寫吧
$user = strtolower($user);

事情都是要遇到才會知道。