2010-03-27 40 views
0

我想獲取數據庫中最新項目的ID,將其加1並將該新ID插入到另一個表中。如何將表中的最後一個id插入到MySQL中的另一個表中?

我想:

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

while ($return = mysql_fetch_assoc($select)) { 

    $id = $return['id']; 
    $newId = $id++; 

} 

mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 

但沒有奏效。如何才能做到這一點?

+0

爲什麼你需要它?你爲什麼不使用自動增量功能? –

+0

是否有特定的錯誤信息?另外$ newId將在這裏等於$ id。 '$ id ++'只會在賦值發生後增加$ id的值。 – jasonbar

+0

@ Col. Shrapnel我確實使用自動增量,這完全是爲了另一個目的。 – James

回答

0

你可以試試這個:

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

if(! $select) 
    die("Query Failed"); 

$return = mysql_fetch_assoc($select); 
$id = $return['id']; 
$newId = ++ $id; // post increment does not work...use preincrement. 
mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 
+0

太好了,謝謝我需要刪除這段時間。出於一些奇怪的原因$ newId = $ id ++不起作用,但是$ newId = $ id + 1。 – James

+0

不知道爲什麼這是被修改的-1 ... –

4

你不應該這樣做。而是在tableName中插入新記錄,然後使用mysql_insert_id()捕獲新ID,然後將其插入anotherTable。這樣你就可以避免在相反的情況下可能發生的競爭狀況。

1

爲什麼使用while語句?如果你只想要最新的ID,只取出來時..

$select = mysql_query("SELECT id FROM tableName ORDER BY id DESC"); 

$return = mysql_fetch_assoc($select); 

$id = $return['id']; 
$newId = $id + 1; 

mysql_query("INSERT INTO anotherTable (someColumn) VALUES ('$newId')"); 
1

使用mysql_insert_id()來獲得最後插入的ID

相關問題