$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的任何建议?
答案 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);