2013-05-11 51 views
1

我有一個數據庫我插入項目使用PHP。我想獲得自動增量列的ID,我閱讀手冊,它說,mysql_query返回資源變量而不是布爾值,有沒有什麼辦法從資源中檢索數據?運行後直接從插入查詢中獲取數據

echo $query_ins = "INSERT INTO `house` VALUES ('' , '$city', '$street', 'num'); 
$res = mysql_query($query_ins); 

的第一個字段是ID字段我感興趣的。
我嘗試mysql_fetch_assoc和mysql_result功能到$資源轉換成數組或檢索數據直接像我將與SELECT查詢,但沒有更迭做。 有什麼建議嗎?

+0

不推薦使用mysql擴展。你應該使用PDO,或者至少使用mysqli。您可以從插入語句中獲得最後一個插入ID,即 – 2013-05-11 19:15:52

+0

。對於更多的數據,你需要運行一個選擇語句 – Aris 2013-05-11 19:18:34

回答

1

參見手冊:mysql_insert_id — Get the ID generated in the last query

這真是你應該已經能夠自己找到輕鬆,沒有張貼到StackOverflow上。查閱您使用的任何API的文檔對您有利。


回覆您的評論:

SELECT * FROM house WHERE id = LAST_INSERT_ID() 

此假設你有一個自動遞增的主鍵。

如果您在插入時生成一個不確定的主鍵值,例如使用RAND()或UUID(),那麼實際上無法檢索生成的值。您應該在執行INSERT之前生成該值,因此您可以使用該值來查找該行。

SET @r := RAND(); 
INSERT INTO house (id, ...) VALUES (@r, ...); 
SELECT * FROM house WHERE id = @r; 

MD5是確定性的,所以假設您有散列原始密鑰字符串,你應該能夠檢索使用MD5表達和原始字符串的行。

INSERT INTO house (id, ...) VALUES (MD5('xyzzy'), ...); 
SELECT * FROM house WHERE id = MD5('xyzzy'); 
+0

嗨,謝謝你的回答,在這種情況下,id真的是我想要的,但總的來說有什麼辦法從該資源中檢索數據?可以說我有一個隨機字段或者當我插入數據時生成一個MD5代碼 – 2013-05-11 19:12:36

+0

嘿,Bill,我見過一些在PHP中使用'@'以及SQL,有什麼特別的含義?我想在PHP中它可以防止警告? – 2013-05-11 19:20:40

+0

'@'運算符可以抑制PHP中的錯誤。 http://php.net/manual/en/language.operators.errorcontrol.php這通常不被認爲是抑制錯誤的好習慣。你應該解決錯誤的根本原因,而不是在地毯下面掃地。 – 2013-05-11 19:21:28