2011-02-03 73 views
0

我目前正試圖創建一個擁有散列如MD5哈希值MySQL數據庫。我使用phpMyAdmin 3.3.9版本和MySQL客戶端版本4.1.22MySQL數據庫的哈希

我已經創建了一個數據庫名爲哈希值。我是mySQL的新手,我如何添加一個包含散列數據的表?

+0

不,我希望用戶輸入的東西,那麼它散列,並檢查其對數據庫中的哈希值。 – AustinM 2011-02-03 19:41:39

+0

MySQL 4.1.22?你是否搶過博物館或其他東西? – Mchl 2011-02-03 22:38:21

回答

1

哈希列應爲CHAR(32),因爲這是哈希的長度:

CREATE TABLE `hashes` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `hash` CHAR(32), 
    PRIMARY KEY (`id`) 
); 

mysql> describe hashes; 
+-------+----------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+----------+------+-----+---------+----------------+ 
| id | int(11) | NO | PRI | NULL | auto_increment | 
| hash | char(32) | YES |  | NULL |    | 
+-------+----------+------+-----+---------+----------------+ 

如果你想從表中給出用戶輸入選擇:

-- Insert sample data: 
mysql> INSERT INTO `hashes` VALUES (null, MD5('hello')); 
Query OK, 1 row affected (0.00 sec) 

-- Test retrieval: 
mysql> SELECT * FROM `hashes` WHERE `hash` = MD5('hello'); 
+----+----------------------------------+ 
| id | hash        | 
+----+----------------------------------+ 
| 1 | 5d41402abc4b2a76b9719d911017c592 | 
+----+----------------------------------+ 
1 row in set (0.00 sec) 

您可以添加一個關鍵在hash爲更好的表現。

0

散列可以被存儲爲文本二進制數據或(更方便)。默認情況下,PHP MD5函數輸出一個由32個字符組成的字符串,因此您需要一個包含32個字符的字段的表格。就這樣。 :)

0

如果您打開數據庫(點擊它在左邊的列名),將有一個「創建數據庫DBNAME新表」一節。輸入你想要的表格名稱(例如散列),以及你想要的字段數量。

這是我們需要更多信息的地方:如果你只是想單獨存儲散列和散列,那麼你需要兩個字段:一個唯一的散列ID(整型,auto_increment設置爲true)和一個32字符文本字段。我有點不確定這是否有用,所以如果你發佈了更多的信息,我們可能能夠幫助你解決你想要改善的一些問題。

編輯: 在這種情況下,你需要三個字段:哈希ID(在表中的每個條目的唯一參考),散列,並明文與之相關。將哈希ID設置爲整數,並將auto_increment設置爲true。將散列的字段設置爲長度爲32的varchar,並將明文字段設置爲「文本」。