Как узнать последний ID в MySQL
Очень часто при работе с базой данных через PHP необходимо вставлять записи в таблицу. И время от времени необходимо узнавать, какой id был у этой последней вставленной записи. В этой небольшой статье я покажу самый оптимальный и простой способ, как узнать последний id в MySQL.
Скажу по секрету, ещё до вчерашнего дня я использовал другой способ: сразу после вставки записи вытаскивал максимальный id из этой же таблицы. Именно его и советуют на каждом углу, на каждом форуме, поэтому его я и использовал. Способ рабочий, но, во-первых, с "костылями", а, во-вторых, нет гарантий, что не придёт какой-нибудь другой пользователь и выполнит такой же запрос, тогда максимальный id не будет соответствовать тому, который нужен. Вероятность маленькая, но при большой посещаемости вполне вероятное событие.
И вчера мне рассказали об отличном свойстве объекта mysqli, которое как раз и позволяет узнать id вставленной в последний раз записи.
Приведу простой PHP-код:
<?php
$mysqli = new mysqli("localhost", "root", "", "mydb"); // Подключаемся к базе данных
$mysqli->query("INSERT INTO `cities` (`city`) VALUES ('Moscow')"); // Вставляем запись в таблицу
echo $mysqli->insert_id; // Выводим последний ID
?>
Именно свойство insert_id и является тем самым, которое и содержит id последней вставленной записи.
Напоследок скажу, что данное свойство работает только для тех таблиц, где есть поле с AUTO_INCREMENT. Для всех остальных таблиц данное свойство работать не будет, впрочем, оно там и не нужно.
-
- Михаил Русаков
Комментарии (7):
А можно это узнать через фунции (т.е без ооп)?
Ответить
Да, можно. Для этого есть функция mysql_insert_id().
Ответить
спасибо
Ответить
Уважаемый Михаил,а как можно сделвть чтобы пользователь смог порекомендовать статьи в социальных сетях например вконтакте,фейсбуке и в твиттере...Заранее Вам спасибо.
Ответить
http://myrusakov.ru/video-social.html
Ответить
У меня возвращает 0 :(
Ответить
Ведь проще вроде, если сделать <?php $var = mysqli_query('SELECT * FROM `table`'); // А потом просто получить кол-во в возвращенных значений $var = fetch_assoc($var); echo count($var); ?>
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.