2014-02-12 492 views
-3

我有這樣的代碼,我需要通過一種形式來填充兩個表中的一個新行的外鍵約束。這個doe只涉及第一個插入,我需要標識生成的last_id用於相關表。但$ last_id返回總是零notwist並且新記錄是創建。mysql_insert_id()總是返回0

//Connect to Database 
$con=mysqli_connect($db_host,$db_username,$db_pass,$db_name); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
// Database connesso 

// Devo inserire il record in Documents prima perché é quello che genera la Primary Key 

$sql=" INSERT INTO Documents (doc_name, doc_type, doc_manager, doc_pointer) VALUES ('$upload_name','Privacy','Agente di riferimento','$pic')"; 
$last_id = mysql_insert_id(); 
Echo "Last Protocol Number =".$last_id."<br>"; 

絕對相似的代碼完全在另一個腳本因此不應該是一個PHP版本問題:

//將信息寫入數據庫 的mysql_query(「INSERT INTO documents(DOC_NAME,DOC_TYPE, doc_manager,doc_pointer)VALUES('$ name','$ type','$ manager','$ pic')「); $ id = mysql_insert_id(); Echo「Last Protocol Number =」。$ id。「
」;

無法理解其中的問題。

+0

SELECT LAST_INSERT_ID() – Jeff

+1

所以... mysql或者mysqli的......?這是什麼? – deceze

+0

你實際上並沒有運行你的$ sql。你的代碼中沒有'mysql_query'。 – secretmike

回答

4

你忘了執行查詢你混合mysql_mysqli_的API

$sql=" INSERT INTO Documents (doc_name, doc_type, doc_manager, doc_pointer) VALUES ('$upload_name','Privacy','Agente di riferimento','$pic')"; 
mysqli_query($con, $sql); 
$last_id = mysqli_insert_id($con); 

僅供參考,本例中沒有錯誤處理。你應該添加它。

+0

OP似乎是半使用的mysqli已經... – deceze

+0

完全錯過了,當我看到他們沒有運行他們的查詢。答案已更新。 –

+0

在現實中有mysqli_query執行,但後來mysqli_insert_id,因此你是rigth,這就是它不工作的原因。 – Velectro