2010-09-30 47 views
0

您好我有將數據插入一個MySQL表(A)形式(X)和比重定向到另一形式(Y),這將數據插入到另一個表(B),但我需要使用表A的最後插入的行。

我知道我可以從使用mysqli_insert_id函數得到它,但是當我提交表單Y並重新顯示錶單Y時,由於$ID的值已被清零,所以已經搞亂了。我試圖通過這樣做來輸入id的值。

$id = (int)mysqli_insert_id($link); 

但這根本沒有幫助。

回答

1

你可以使用會話來存儲,而你正在處理的形式X的值,然後可以通過形式Y.拾起

X:

session_start(); 
$_SESSION['insert_id'] = 42; 

Y:

session_start(); 
$insert_id = $_SESSION['insert_id']; // 42 

請參閱the manual瞭解如何在完成該操作後銷燬會話的示例。

+0

謝謝,我馬上去會議 – cferbs 2010-09-30 21:45:37

2

你必須從形式之間mysqli_insert_id堅持的結果,無論是通過cookie,會話或隱藏的投入。

由於mysqli_insert_id只會返回它所調用的連接實例,而不是整個數據庫,因此當您切換到另一個表單時,原始連接將關閉,並打開一個新連接,該連接尚未插入任何標識(因此爲空值)。

我會親自去與會話,但是這一切都取決於您的安全要求。

+0

以及我的安全不是一個大問題,這是對庫存的要求非常簡單的內部形式。它的所有一個控制器索引類只包含基於3個提交值的表單。我認爲只有一個數據庫連接是由索引類創建的,因爲我把連接信息放在一個單獨的文件中,並且對它做了include_once'db.php'。我是新來的PHP,並沒有學習cookie或會話尚未....... – cferbs 2010-09-30 21:39:16

+0

謝謝我會看看會議。 – cferbs 2010-09-30 21:45:09

+0

如果有多個表單提交,則會有多個連接。雖然你通過相同的細節連接,但它不是同一個連接實例,就像兩個相同的巧克力棒。如果你吃一個,那麼第二個可能是同一個巧克力棒類型,但不是完全相同的巧克力棒(第一個已經消失,從未被檢索到)。 – Psytronic 2010-09-30 21:46:23