我似乎无法从 MySQL 获取最后插入的记录/ID

Posted

技术标签:

【中文标题】我似乎无法从 MySQL 获取最后插入的记录/ID【英文标题】:I can't seem to get the last inserted record/id from MySQL 【发布时间】:2013-12-14 09:06:00 【问题描述】:

我有一个问题。我似乎无法从我的 mysql 数据库/表中获取最后插入的记录/ID。我想从“tag_id”列中返回最后插入的 id,但我什么也没有得到。顺便说一句,我正在使用 DBO。我尝试了“mysql_insert_id”和“lastInsertId”,但都没有成功。

我的数据库表如下所示:

表名:gitags_tags

  tag_id  |  name  
----------+---------
   437    |  2011
   438    |  2012
   439    |  2013
   440    |  new

我的 php 看起来像这样(在这种情况下,我想返回 '440'):

/*
* Insert the new tagname in the database in the table 'gitags_tags'
*/
$query = "INSERT INTO gitags_tags (`name`) VALUES ('".$new_tagname."')";
$db->setQuery($query);

if (!$db->query()) 
    echo "Something went wrong \n";
    echo $query . "\n";
    exit;


// Neither of these two work ...
echo mysql_insert_id();
echo $db->lastInsertId('tag_id');

非常感谢任何帮助。

【问题讨论】:

一定是 Joomla 的问题。请read this. 如果您尝试从数据库中获取数据,请显示select 查询,而不是您的insert 查询。阅读有关使用 Joomla 标准编码数据库查询的 Joomla 文档! docs.joomla.org/Selecting_data_using_JDatabase ....和.... docs.joomla.org/… 试试这个 var_dump($db->mysql_insert_id()); var_dump 给出 'NULL'。 您真的想要最后一个标签,还是想要您正在处理的标签,即获取密钥?对于后者,大多数这些方法的问题是在你的之后可能插入了一些其他进程。 【参考方案1】:

确保 tag_id 已设置为主键和增量。

/*
* Insert the new tagname in the database in the table 'gitags_tags'
*/
$query = "INSERT INTO gitags_tags (`name`) VALUES ('".$new_tagname."')";
$db->setQuery($query);

echo mysql_insert_id();
echo $db->lastInsertId('tag_id');

//Use select query and echo this record with this tag_id.

【讨论】:

【参考方案2】:

它应该通过使用 DESC 和 LIMIT 回显一个新的 SQL 查询来工作。像这样:

SELECT tag_id FROM gitags_tags ORDER BY tag_id  DESC LIMIT 1

【讨论】:

【参考方案3】:

要获取最后插入的记录,您可以使用:

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select($db->quoteName('tag_id'))
 ->from($db->quoteName('gitags_tags'))
 ->order($db->quoteName('tag_id') . ' DESC');

$db->setQuery($query);
$result = $db->loadResult();

echo $result;

【讨论】:

【参考方案4】:

您使用了无效的 Joomla DB 函数,请改用 echo $db->insertid();

【讨论】:

这终于对我有用了。真令人沮丧哈。

以上是关于我似乎无法从 MySQL 获取最后插入的记录/ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有'id'列的MySql中获取最后插入的记录?

如何从 JayData 事务中获取最后插入 ID?

为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?

如何获取使用 EF Core 从存储过程中插入的记录的 id 值

Java MongoDB FindOne 获取最后插入的记录

获取mybatis中最后插入记录的id