發現問題所在了...
不知道為什麼, 你的 mySQL 不會轉換大小寫...
你的 mySQL 對
LOWER('筱惠兒') 這個指令沒有反應... 出來的還是"筱惠兒....."
跑下面那個程式就看的出來... 你的結果應該是三個名字都相同...
(至少 LOWER 那個會是相同的...)
我用來測試的 mySQL 版本是 4.02, 而用的是 latin1 編碼...
如果你是用 appServ 裝的話應該跟我的 mySQL 的設定不同, 尤其在安裝時設定的編碼上(big5?),
我沒用過設定用 big5 編碼的 mySQL, 不知道這個問題是不是只有非 latin1 才會出現...
不過在找出問題的根本之前, 照你前面測試的結果來看, 可能有一個解決辦法, 不過要再麻煩你再試一個...
順便列出來 mySQL 的版本.
代碼: 選擇全部
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$sql = "SELECT user_id, LOWER(username) AS lu, UPPER(username) AS uu, username FROM ".USERS_TABLE." WHERE user_id = 1786";
if (!($result = $db->sql_query($sql))) echo "1:bad<br>";
$totalFound = array();
while($row = $db->sql_fetchrow($result)) $totalFound[] = $row;
for($i = 0; $i < count($totalFound); $i++) {
echo "1:UPPER ".$totalFound[$i]['user_id'].":".$totalFound[$i]['lu']."<br>";
echo "1:LOWER ".$totalFound[$i]['user_id'].":".$totalFound[$i]['uu']."<br>";
echo "1:NORMAL ".$totalFound[$i]['user_id'].":".$totalFound[$i]['username']."<br>";
}
echo "mysql version: ".mysql_get_server_info()."<br>";
$username = "Priscilla";
$sql = "SELECT user_id, LOWER(username) AS lu, UPPER(username) AS uu, username FROM ".USERS_TABLE." WHERE HEX(LOWER(username)) = '".bin2hex(strtolower($username))."'";
if (!($result = $db->sql_query($sql))) echo "2:bad<br>";
$totalFound = array();
while($row = $db->sql_fetchrow($result)) $totalFound[] = $row;
for($i = 0; $i < count($totalFound); $i++) {
echo "2:UPPER ".$totalFound[$i]['user_id'].":".$totalFound[$i]['lu']."<br>";
echo "2:LOWER ".$totalFound[$i]['user_id'].":".$totalFound[$i]['uu']."<br>";
echo "2:NORMAL ".$totalFound[$i]['user_id'].":".$totalFound[$i]['username']."<br>";
echo "2:ORIGINAL :$username";
}
?>