【问题标题】:I can't seem to get the last inserted record/id from MySQL我似乎无法从 MySQL 获取最后插入的记录/ID
【发布时间】: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'。
  • 您真的想要最后一个标签,还是想要您正在处理的标签,即获取密钥?对于后者,大多数这些方法的问题是在你的之后可能插入了一些其他进程。

标签: php mysql sql joomla dbo


【解决方案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();

        【讨论】:

        • 这终于对我有用了。真令人沮丧哈。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 2011-03-09
        相关资源
        最近更新 更多