2015-05-12 29 views
0

試圖讓一個簡單的PHP登錄和運行了一些問題,這裏的錯誤:排序規則的非法組合 - 簡單的PHP登錄

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

這裏的查詢

SELECT * FROM `accounts` WHERE `username` = :user AND `password` = MD5(CONCAT(MD5(`salt`), MD5(:pass))) 

:user:pass準備好的語句參數包含用戶名和密碼。我想在查詢中模擬md5(md5(salt).md5(pass))

使用PDO php。

+0

你真的不應該在密碼哈希用自己的鹽,你真的應該使用PHP的[內置函數(HTTP:// jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。 –

回答

0

根據MD5上的MySql手冊,MD5功能的排序結果與您的系統或連接設置相同。

我想你的列歸類設置不同於你的系統設置。

您可以在創建連接時指定您的排序規則設置。 請參閱opening PDO connection

未經測試,我認爲像這樣的工作:

$dsn = 'mysql:host=localhost;dbname=testdb;charset=latin1_swedish_ci'; 
$username = 'username'; 
$password = 'password'; 
$options = array(
    ... 
); 

$dbh = new PDO($dsn, $username, $password, $options); 
+0

您能否提供關於在何處使用PDO執行此操作的信息?當試圖通過'PhpMyAdmin'完成查詢時,甚至會發生這種情況。 – Hobbyist

+0

我不知道如何在PhpMyAdmin中打開現有數據庫時指定字符集。但是,您可以在「操作」選項卡中更改數據庫的系統設置。 – Griffin

相關問題