Я не могу получить последнюю вставленную запись / идентификатор из MySQL

У меня есть вопрос. Я не могу получить последнюю вставленную запись / идентификатор из моей базы данных / таблицы MySQL. Я хочу вернуть последний вставленный идентификатор из столбца "tag_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 ответа

Решение

Чтобы получить последнюю вставленную запись, вы можете использовать это:

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

Вы используете недопустимую функцию Joomla DB, используйте echo $db->insertid(); вместо.

Это должно работать, повторяя новый запрос SQL с DESC и LIMIT. Как это:

SELECT tag_id FROM gitags_tags ORDER BY tag_id  DESC LIMIT 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.
Другие вопросы по тегам