使用从 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->insert_id
。
【讨论】:
感谢您的礼貌和翔实的回答。 $db->insert_id 有效,我的教科书对 mysqli 对象中可用的资源非常简短。下一站,在线手册自己阅读。 @skkevinperson:不客气。 php 手册在入门时绝对很有帮助。以上是关于使用从 php 中选择 last_insert_id() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 PHP PDO 从 PHPMyAdmin 中选择数据
如何使用 PHP(和 HTML)从 SQLite 中选择、插入、更新和删除数据
如何在提交到 PHP 之前使用 AJAX 从选择标签中获取数据?