2014-02-18 146 views
1

我想獲得最後插入的行的ID,我使用mysql_insert_id()函數。但給人的問題php mysql獲取最後一個插入行的ID給出錯

這裏是我的代碼:

if($i == 0) 
{ 
    $query = "update events set e_did ='".$multi_event."' where eid = '".$display_id."'"; 
    mysqli_query($con,$query); 
    file_put_contents('log.txt', mysql_insert_id(), FILE_APPEND); 
} 
else 
{ 
    $query = "INSERT INTO events (start_date, end_date, text, rec_type, event_pid, event_length, e_did) VALUES ('".$row['start_date']."','".$row['end_date']."','".$row['text']."','".$row['rec_type']."','".$row['event_pid']."','".$row['event_length']."','".$multi_event."')"; 
    mysqli_query($con,$query); 
    file_put_contents('log.txt', 'A'.mysql_insert_id().'A', FILE_APPEND); 
} 

現在無論時間I M得到相同的ID。什麼是問題。我在某處做錯了什麼?

+0

你有任何主鍵自動增加你的表'事件'? –

+0

id列自動遞增 –

+0

所以它應該在插入查詢後工作.it將不會在更新後查詢 –

回答

6

如果使用mysqli函數,則必須使用mysqli_insert_id。你不能混用ext/mysql和ext/mysqli。

另外,UPDATE不會生成新的自動遞增ID。你應該在INSERT後調用mysqli_insert_id(),但不要更新。

+0

現在沒有成功任何id返回null –

+0

完成....忘了傳遞$ con參數:)乾杯 –

+0

UPDATE可以被設置爲自動增量id,儘管:) –

4

mysqli_insert_id()對於INSERT查詢只返回id。一個update查詢將不是返回一個id,因爲從定義上說,你必須已經有一個數據庫中的行,它正在得到更新。

+0

謝謝....工作 –

2

隨着UPDATE,你正在編輯記錄,而不是增加。因此沒有生成新的 ID。您只能在INSERT上使用mysql_insert_id

注意:mysql_*功能已棄用,在將來的版本中不再支持。您應該使用mysqli_*PDO