使用从 php 中选择 last_insert_id() 不起作用

Posted

技术标签:

【中文标题】使用从 php 中选择 last_insert_id() 不起作用【英文标题】:Using select last_insert_id() from php not working 【发布时间】:2013-09-04 06:51:35 【问题描述】:

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

【问题讨论】:

您也可以使用 order by 来检索它。如果您不想使用 mysql_insert_id() 或任何函数。 @kalpit:这不是一个好的解决方案,因为它需要另一个往返于数据库的往返行程以及查询的所有开销。 $xbonez 他不想使用 mysql_insert_id() 函数然后我认为没有其他方法可以使用 mysql_* 检索 id 更新:$db 是一个 mysqli 对象。抱歉遗漏了。 @skkevinperson 在帖子中更新这些内容,而不是在这里发表评论。以便大家注意。 【参考方案1】:

在使用mysql_* 时,获取最后插入的id 的正确方法是调用mysql_insert_id()

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

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

对于 PDO,您可以使用 PDO::lastInsertId。 对于mysqli,请使用mysqli-&gt;insert_id

【讨论】:

感谢您的礼貌和翔实的回答。 $db->insert_id 有效,我的教科书对 mysqli 对象中可用的资源非常简短。下一站,在线手册自己阅读。 @skkevinperson:不客气。 php 手册在入门时绝对很有帮助。

以上是关于使用从 php 中选择 last_insert_id() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 PHP PDO 从 PHPMyAdmin 中选择数据

如何使用 PHP(和 HTML)从 SQLite 中选择、插入、更新和删除数据

如何在提交到 PHP 之前使用 AJAX 从选择标签中获取数据?

如何使用php从数据库的每一行中选择数据

使用 php/ajax 选择下拉菜单后从数据库中获取客户信息

我如何从使用 php 中选择的用户输入中计算总价