2012-12-14 49 views
-2
$tSQL = "insert into events(title,start,end,allday,url,customerid) VALUES(\"" . $_POST['title'] . "\", FROM_UNIXTIME($epochstart), FROM_UNIXTIME($epochend), \"$allday\", \"$url\", \"$customerid\")"; 
$mysqli->multi_query($tSQL); 
$lasterror = $mysqli->error; 



$tSQL = "update events set url = \"details.php?\"" . mysql_insert_id() . " where idevents = \"$eventid\""; 
$row = $mysqli->multi_query($tSQL); 
$lasterror = $mysqli->error; 

echo print_r($tSQL); 

我insert語句肯定不會然而插入記錄mysql_insert_id()返回保持0它不應該是這樣,因爲有一個自動遞增的主鍵在那個事件表中,那個也運行良好。有關如何獲取最後插入的ID的任何建議?mysql_insert_id()返回0,即使最後的插入是成功的

+0

替換'mysql_insert_id()'和'mysqli_insert_id()' –

+1

這麼多好的答案,沒有接受... – beerwin

+0

我不知道你在說什麼。我接受了瓦肯的答案。因爲這是第一個,也是一個非常好的答案。 – Giuseppe

回答

3

您的查詢通過mysqli執行,所以mysql功能不會持有插入的ID。相反,使用the mysqli version

$id = $mysqli->insert_id; 
+0

非常感謝你的回答。我受到了偏見,或者我早已標出了答案。 – Giuseppe

3

由於您使用mysqli擴展,改變

$tSQL = "update events set url = \"details.php?\"" . mysql_insert_id() . " where idevents = \"$eventid\""; 

$tSQL = "update events set url = \"details.php?\"" .$mysqli->insert_id. " where idevents = \"$eventid\""; 
4

Becasue您使用mysqli而不是mysql

只需使用mysqli_insert_id()更換mysql_insert_id()如果使用程序風格

或者如果使用面向對象與$mysqli->insert_id更換風格

1

因爲您正在使用mysqli這是mysql的改進版本。

使用mysqli->insert_id而不是mysql->insert_id()

$tSQL = "insert into events(title,start,end,allday,url,customerid) VALUES(\"" . $_POST['title'] . "\", FROM_UNIXTIME($epochstart), FROM_UNIXTIME($epochend), \"$allday\", \"$url\", \"$customerid\")"; 
    $mysqli->multi_query($tSQL); 
    $lasterror = $mysqli->error; 

    $lastInsId=$mysqli->insert_id(); 

    $tSQL = "update events set url = \"details.php?\"" . $lastInsId . " where idevents = \"$eventid\""; 
    $row = $mysqli->multi_query($tSQL); 
    $lasterror = $mysqli->error; 

    echo print_r($tSQL); 
相關問題