php mysql узнать id добавленной записи

mysql_insert_id

mysql_insert_id — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе

Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для данной функции:

Описание

Возвращает идентификатор, сгенерированный колонкой с AUTO_INCREMENT последним запросом (обычно INSERT).

Список параметров

Возвращаемые значения

Примеры

Пример #1 Пример использования mysql_insert_id()

Примечания

mysql_insert_id() конвертирует возвращаемый функцией MySQL C API тип значения функции mysql_insert_id() в тип long (называемый int в PHP). Если ваша колонка AUTO_INCREMENT имеет тип BIGINT (64 бита), то значение, возвращаемое функцией в результате преобразования может быть искажено. Используйте вместо данной функции внутреннюю MySQL-функцию LAST_INSERT_ID() в SQL-запросе. Подробнее о максимальных значениях целых чисел смотрите в разделе документации, посвящённом целым числам.

Так как mysql_insert_id() работает с последним выполненным запросом, вызывайте mysql_insert_id() сразу же после запроса, генерирующего новое значение.

Значение в SQL функции MySQL LAST_INSERT_ID() всегда содержит последний сгенерированный ID и не обнуляется между запросами.

Смотрите также

User Contributed Notes 12 notes

There’s nothing inherently wrong with using auto-increment fields. There’s also nothing wrong with the main competetive idea, which is for the database to supply a primitive sequence of non-repeating identifiers, typically integers. This is rather like which side of the road you drive on.

The bigger problem is when people don’t understand what they are doing with database access. It’s like driving a car without really knowing the rules of the road. Such people wind up making bad decisions without realizing it, and then, eventually, something breaks.

Databases are complex beasts, and worth taking the time to really understand. Learn about the implications and limitations of different approaches to solving problems. Then, you will be prepared to pick a solution based on what has to work.

I thought this would be relevant to all the people using mysqli and looking for the ID after INSERT command :

>
?>

Then, on the other side, let us call this function as follows :

I don’t get all the fuss around this.

I read:
«The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.»

I can’t really see what’s inaccurate about that.

«In the case of a multiple-row INSERT statement, mysql_insert_id() returns the first automatically generated AUTO_INCREMENT value; if no such value is generated, it returns the last last explicit value inserted into the AUTO_INCREMENT column.»

I must be missing something here but why would you insert multiple rows and then only handle the last one with some favoured behaviour? You could just as well insert them one at a time and then handle each row separately with the latest id.

I can’t see what’s wrong with that.

However I can see what’s wrong with simply using max(my_table.id_column) because of the concurrent access issues this would imply.

Forget about using MAX to get the last inserted id. Race conditions like other users inserting between your SELECT MAX(.. and your INSERT may render your id unusable.

The WAY to get the id is by using mysql_insert_id() or the mysql SQL function LAST_INSERT_ID().

Take care, if using mysql_insert_id() you should provide the resource returned by the mysql_connect, not the resultset returned by mysql_query.

How to get ID of the last updated row in MySQL?

75
down vote
I’ve found an answer to this problem 🙂

SET @update_id := 0;
UPDATE some_table SET row = ‘value’, @update_id := id)
WHERE some_other_row = ‘blah’ LIMIT 1;
SELECT @update_id;
EDIT by aefxx

This technique can be further expanded to retrieve the ID of every row affected by an update statement:

SET @uids := null;
UPDATE footable
SET foo = ‘bar’
WHERE fooid > 5
AND ( SELECT @uids := CONCAT_WS(‘,’, fooid, @uids) );
SELECT @uids;
This will return a string with all the IDs concatenated by a colon.

Источник

Получить «id» только что добавленной записи

Доброго времени, в заполяемой запросом таблице есть поле «id», которое устанавливается автоматически.

Каким способом, желательно оптимальным, можно получить этот самый «id», сразу после успешного добавления записи в таблицу.

Пока что на ум приходит лишь два варианта «в лоб», или достать максимальный «id», что при многопользовательской работе не гарантирует правильный результат, либо искать в базе запись со всеми только что добавленными данными, что тоже может привести к неверному результату.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как узнать id только что добавленной записи mysqli?
Всем привет! Записываю данные в БД. Надо узнать id этой записи, т.е. id только что вставленной.

Как получить id последней добавленной записи в БД в MSSQL
Привет! Народ, кто-нить знает как получить id последней добавленной записи в БД в MSSQL? Нужен.

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php mysql узнать id добавленной записи. Смотреть фото php mysql узнать id добавленной записи. Смотреть картинку php mysql узнать id добавленной записи. Картинка про php mysql узнать id добавленной записи. Фото php mysql узнать id добавленной записиПолучение ключа только что добавленной записи
Как получить в Visual Basic ключ только что добавленной записи в Access? Используется DAO.

php mysql узнать id добавленной записи. Смотреть фото php mysql узнать id добавленной записи. Смотреть картинку php mysql узнать id добавленной записи. Картинка про php mysql узнать id добавленной записи. Фото php mysql узнать id добавленной записиКак узнать ID только что добавленной записи в БД
Здравствуйте! добавляю новую запись в таблицу и мне надо узнать ее id/ strSQL = «insert into.

Источник

mysqli::$insert_id

Описание

Список параметров

Возвращаемые значения

Только запросы, выданные с использованием текущего соединения, влияют на возвращаемое значение. На значение не влияют запросы, выданные с использованием других подключений или клиентов.

Если число больше максимального значения целого числа, функция вернёт строку.

Примеры

Результат выполнения данных примеров:

User Contributed Notes 8 notes

I have received many statements that the insert_id property has a bug because it «works sometimes». Keep in mind that when using the OOP approach, the actual instantiation of the mysqli class will hold the insert_id.

There has been no examples with prepared statements yet.

«`php
$u_name = «John Doe»;
$u_email = «johndoe@example.com»;

For UPDATE you simply change query string and binding parameters accordingly, the rest stays the same.

Of course the table needs to have AUTOINCREMENT PRIMARY KEY.

[EDIT by danbrown AT php DOT net: This is another prime example of the limits of 32-bit signed integers.]

When running extended inserts on a table with an AUTO_INCREMENT field, the value of mysqli_insert_id() will equal the value of the *first* row inserted, not the last, as you might expect.

query(«INSERT INTO mytable (field1,field2,field3) VALUES (‘val1′,’val2′,’val3’),
(‘val1′,’val2′,’val3’),
(‘val1′,’val2′,’val3’)»);

The example is lack of insert_id in multi_query. Here is my example:
Assuming you have a new test_db in mysql like this:

create database if not exists test_db;
use test_db;
create table user_info (_id serial, name varchar(100) not null);
create table house_info (_id serial, address varchar(100) not null);

Then you run a php file like this:

last insert id in query is 1
last insert id in first multi_query is 4
last insert id in second multi_query is 1

Conclusion:
1 insert_id works in multi_query
2 insert_id is the first id mysql has used if you have insert multi values

msqli_insert_id();
This seems to return that last id entered.
BUT, if you have multiple users running the same code, depending on the server or processor I have seen it return the wrong id.

Test Case:
Two users added an item to their list.
I have had a few times where the id was the id from the other user.
This is very very rare and it only happens on my test server and not my main server.

I am guessing it is because of multicores (maybe hyperthreading) or how the operating system handles multi-threads.

Источник

ID последней записи в базе данных MySQL в PHP

Обычно, задача узнать последний добавленный идентификатор (id) возникает после запроса вставки данных INSERT. Причем, поле, которое будет содержать это значение, назначается автоматически базой данных.

Автоматическое назначение id в базе данных используется очень часто. При этом сразу решается проблема уникальности идентификатора – он не будет дублироваться, и не нужно реализовывать специальный код для его генерации. Тем более что любая СУБД обязательно включает в себя такой функционал.

Стоит уточнить, что иногда есть необходимость генерировать идентификатор по другим правилам. Такое делается либо для удобства дальнейшей работы – например, включение в id значения, которые будет иметь какой-то смысл – текущая дата или тип записи. Либо, наоборот, идентификатор формируется набором случайных символов для обеспечения безопасности. В этом случае, сложно будет его случайно указать или угадать.

Для нахождения последнего id, созданного при вставке дынных в MySQL, в PHP используется функция mysql_insert_id. Обязательных параметров у нее нет, поэтому в коде просто присваиваем значение, возвращаемое этой функции в переменную или сразу используем ее в качестве параметра в другой функции.

В разработке, такой подход наиболее простой и удобный. Но применять его нужно, зная, что эта функция возвращает идентификатор, созданный для любой из таблиц последним. Т.е. может возникнуть ситуация, когда в «один момент времени» в БД будет добавлено две записи. При этом функция mysql_insert_id будет возвращать id записи, добавленной последней.

Кроме того, если между интересующим запросом вставки данных и функцией определения идентификатора будет выполнен другой запрос, не использующий поля с атрибутами AUTO_INCREMENT (поле со счетчиком), то будет возвращено значение 0.

Обычно этой функцией пользуются непосредственно после выполнения запроса на добавление данных, поэтому вероятность описанной ситуации сводится к минимуму. Но если известно, что этот механизм может многократно выполняться в единый момент времени, стоит вспомнить об этой проблеме и проверить насколько корректно все работает.

Источник

Как узнать последний вставленный id?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Мультфильм на Turbo Pascal. Требуется альтернатива cleardevice. Как очистить только последний вставленный кадр?
Возникла проблемка при написании мультфильма на Паскале. Очень надеюсь на Вашу помощь. Дело в том.

Как узнать последний ID в базе?
здравствуйте. помогите пожалуйста.. У меня данные из регистрационной формы после нажатия кнопки.

Как узнать последний символ строки?
Как узнать последний символ строки? Т.е. то что на паскале я написал бы так: ch:=s;

Как узнать последний элемент List?
Мне нужно чтобы добавлялись к массиву list переменные и я обращался к последней из них но не могу.

Честно говоря, я им не пользовался. но на сколько я понимаю, он вернёт последний номер, который был добавлен с текущего подключения к серверу MySQL. Т.е. если добавить строку, а потом переподключиться к мусклу, то SELECT LAST_INSERT_ID(); уже не будет срабатывать, т.к. это новое подключение не добавляло никаких строк.

Мда. не умею я объяснять php mysql узнать id добавленной записи. Смотреть фото php mysql узнать id добавленной записи. Смотреть картинку php mysql узнать id добавленной записи. Картинка про php mysql узнать id добавленной записи. Фото php mysql узнать id добавленной записиОбщий смысл всего что я тут накалякал:
SELECT MAX(`id`) в большинстве случаев будет нормально срабатывать. но иногда может выдавать неправильный результат (если параллельно выполняется ещё один скрипт, который тоже добавляет строку в эту же таблицу).

SELECT LAST_INSERT_ID() должен нормально срабатывать. он возвращает номер именно от последнего запроса, который выполнен этим же подключением к БД. Тоже самое выполняет API функция mysql_insert_id.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как узнать когда последний раз Яндекс индексировал
подскажите скрипт на сайте или программу с помощью которой можно узнать когда Яндекс последний раз.

Как узнать в ASP при вставке в БД MSSQL последний ID
Нужно вставить в БД данные, там должно быть поле id (auto_increment если в MSSQL оно есть, если.

Как узнать когда пользователь был активен последний раз
Есть программа. Она должна во время своей работы следить, проявляет пользователь активность за.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *