使用php中的select last_insert_id()不起作用

时间:2013-09-04 06:51:35

标签: php mysql last-insert-id

我有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。

1 个答案:

答案 0 :(得分:6)

使用mysql_*时获取上次插入ID的正确方法是拨打mysql_insert_id()

您正在阅读的内容部分正确 - mysql_insert_id正在被弃用,但不仅仅是该功能。所有mysql_*函数都已被弃用。 相反,您应该使用PDO或mysqli_*

在您的代码段中,不清楚您使用的是哪个数据库访问库。由于您的调用似乎绑定到某个对象,因此您可能正在使用PDO或mysqli。

对于PDO,您可以使用PDO::lastInsertId 对于mysqli,请使用mysqli->insert_id