Я не могу получить последнюю вставленную запись / идентификатор из 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.