我有this exact same issue,但答案是陈旧的,我已经读过其他地方使用mysql_insert_id()的费用已经折旧,应该在新代码中避免使用。
数据库是InnoDB,此表的主键设置为auto_increment。
谁能看到我在这里做错了什么?我应该注意到我是一个初学者并且自己学习,所以我很抱歉这是非常明显的。
$query = "INSERT INTO VENUES (province,city,venue)" . "VALUES " . "('$province','$city','$venue')";
$result = $db->query($query);
if ($result) {
echo "$result row(s) sucessfully inserted.<br/>";
} else {
echo "$db->error<br/>";
}
$result = $db->query("select last_insert_id()");
echo $result->num_rows //returns 1
echo $result; //nothing beyond this line happens
更新:我正在使用mysqli。
答案 0 :(得分:6)
使用mysql_*
时获取上次插入ID的正确方法是拨打mysql_insert_id()
。
您正在阅读的内容部分正确 - mysql_insert_id
正在被弃用,但不仅仅是该功能。所有mysql_*
函数都已被弃用。 相反,您应该使用PDO或mysqli_*
。
在您的代码段中,不清楚您使用的是哪个数据库访问库。由于您的调用似乎绑定到某个对象,因此您可能正在使用PDO或mysqli。
对于PDO,您可以使用PDO::lastInsertId
对于mysqli
,请使用mysqli->insert_id
。