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

时间:2013-11-28 10:57:34

标签: php mysql sql joomla dbo

我有一个问题。我似乎无法从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');

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

您正在使用无效的Joomla数据库功能,请改用echo $db->insertid();

答案 1 :(得分:1)

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

$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;

答案 2 :(得分:0)

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

SELECT tag_id FROM gitags_tags ORDER BY tag_id  DESC LIMIT 1

答案 3 :(得分:-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.