2009-12-14 128 views
2

嗨,大家好,我希望從這裏的一些幫助,請。php mysql_insert_id();不工作

我有一個INSERT查詢的表,這樣做是我打電話後:

mysql_insert_id(); 

爲了發送插入到表到下一個頁面像這樣的最後ID:

$insertGoTo = "confirm_booking.php?booking_ID=" .$_POST['booking_ID']. ""; 

不幸的是它不起作用,我得到的只是零。

我插入的表格有一個自動增量編號,並將值插入其中。我也嘗試過SELECT MAX(id) FROM mytable。這種情況也不適用。

我知道這個問題已經被討論過了。我閱讀所有帖子,但沒有用處。

非常感謝弗朗西斯

+0

你能顯示你正在使用的確切代碼嗎?你確定你正在使用正確的數據庫連接嗎? – 2009-12-14 12:22:18

+0

謝謝Pekka,Jan的反饋非常完美。 PS數據庫連接很好。 – frapet 2009-12-14 12:41:38

回答

3

你必須使用由MySql_Insert_Id()的返回值,當你生成你的鏈接:

// your query 
$newId = MySql_Insert_Id(); 

$insertGoTo = "confirm_booking.php?booking_ID=" . $newId; 
+0

謝謝Jan,您的反饋。它現在會發送該ID,但它不會在下一頁中顯示。 – frapet 2009-12-14 12:34:35

+0

發現問題。謝謝你,你救了我的一天! – frapet 2009-12-14 12:39:06

+0

沒問題!樂意效勞。 – 2009-12-14 12:40:30

2

的一些關鍵點,從PHP手冊:

的由前一個查詢 成功爲AUTO_INCREMENT 列生成的ID,如果先前的查詢確實爲0,則生成0 0 不生成AUTO_INCR EMENT值, 或FALSE如果沒有建立MySQL連接 。

如果沒有一個AUTO_INCREMENT字段不是你的問題,你可能想嘗試存儲的mysql_query調用的結果,並將它作爲參數傳遞給ID功能

$result = mysql_query("..."); 
$id = mysql_insert_id($result); 
+0

auto_increment成功並建立連接。一切皆好。 – frapet 2009-12-14 12:29:05

3

這是可能的你的桌子沒有任何AUTO_INCREMENT字段!

它也可能發生,因爲你有兩個或更多的mysql連接在同一時間。 在這種情況下,您應該使用link identifier

$link = mysql_connect(...); 
mysql_select_db('mydb', $link); 
mysql_query('INSERT mytable SET abc="123"', $link); 
$inserted_id = mysql_insert_id($link); 
1

如果插入失敗,mysql_insert_id可能返回0或false? 因此,如果您在使用mysql_insert_id時遇到問題,而不是重新調用您期望的內容,請確認您沒有唯一的約束或其他與sql有關的問題,從而導致插入失敗。如果你考慮這個問題,使用max是一個糟糕的主意。

2

一直在使用這樣的查詢的問題:

INSERT INTO會員(用戶名,密碼,電子郵件)VALUES(...)

  • 原因是該ID(這是我的主鍵和「自動增量」字段)不是查詢的一部分。'使用空值(...

    ' 將MySQL的使用

    INSERT INTO成員(ID,用戶名,密碼,電子郵件)VALUES ')':

將其更改爲自動遞增值,但也允許您使用它在你的查詢,以便您可以返回插入ID

+0

非常有用的提示,值得更多upvotes。使用自動增量時,省略ID列而不是傳遞空字符串是很常見的。 – 2017-01-30 13:07:02

0

確保把mysql_insert_id()

mysql_query($sql, $con); //Execute the query 

上面的查詢負責執行您的Insert INTO ...命令。 當你可以得到最後一個ID插入

+0

問題清楚地表明'mysql_insert_id'在** mysql_query之後發佈**; – 2015-04-27 20:01:59

0

我也遭受這個問題。 最後,我發現問題發生在我與數據庫的連接中。您可以使用以下連接代碼連接數據庫,然後您可以輕鬆使用mysqli_insert_id()。

$db_connect = mysqli_connect("localhost", "root", "", "social"); 

然後你可以使用mysqli_insert_id()作爲

$id = mysqli_insert_id($db_conx); 

我希望這會幫助你。我有任何問題,請留下您的評論。