mysql_insert_id()返回0,即使最后一次插入成功

时间:2012-12-14 07:04:48

标签: php mysql

$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);

我的插入语句肯定会插入记录,但mysql_insert_id()会一直返回0.这不应该是这种方式,因为在该事件表中有一个自动递增的主键,并且运行正常。关于如何获取最后一个插入ID的任何建议?

4 个答案:

答案 0 :(得分:4)

您的查询是通过mysqli执行的,因此mysql函数不会保留插入的ID。相反,请使用the mysqli version

$id = $mysqli->insert_id;

答案 1 :(得分:4)

因为您使用的是mysqli而不是mysql

如果使用程序样式

,只需将mysql_insert_id()替换为mysqli_insert_id()

如果使用面向对象的样式

,则将其替换为$mysqli->insert_id

答案 2 :(得分: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\"";

答案 3 :(得分: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);