Поле 'id' моей таблицы автоматически увеличивается, когда я вставляю строку. Я хочу вставить строку, а затем получить этот идентификатор.
Я бы сделал это так, как сказал, но есть ли способ сделать это, не беспокоясь о времени между вставкой строки и получением идентификатора?
Я знаю, что могу запросить базу данных для строки, которая соответствует введенной информации, но есть большое изменение, будут дубликаты, с единственной разницей, являющейся идентификатором.
mysql_insert_id() will convert the return type of the native MySQL C API function mysql_insert_id() to a type of long (named int in PHP). If your AUTO_INCREMENT column has a column type of BIGINT (64 bits) the conversion may result in an incorrect value. Instead, use the internal MySQL SQL function LAST_INSERT_ID() in an SQL query. For more information about PHP's maximum integer values, please see the integer documentation.
\Функция MySQL
LAST_INSERT_ID()
делает именно то, что вам нужно: она получает идентификатор, который был вставлен во время этого сеанса . Поэтому его безопасно использовать, даже если есть другие процессы (например, другие люди, вызывающие тот же сценарий), вставляющие значения в ту же таблицу.Функция PHP
mysql_insert_id()
делает то же самое , как вызовSELECT LAST_INSERT_ID()
сmysql_query()
.источник
echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID(600)'); echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID()');
Второйmysql_insert_id()
не отражает 600, где, какmysql_query('SELECT LAST_INSERT_ID()')
будет. Чтобыmysql_insert_id()
отобразить изменение, вы должны сначала выполнить вставку или обновление (которые могут повлиять на 0 строк). См. Последний абзац: http://dev.mysql.com/doc/refman/5.0/ru/information-functions.html#function_last-insert-idЧто касается сайта PHP, то mysql_insert_id устарела, и мы должны использовать PDO. Чтобы сделать это с PDO, выполните следующие действия:
источник
Как сказал @NaturalBornCamper, mysql_insert_id теперь устарела и не должна использоваться. Варианты теперь использовать либо PDO, либо mysqli. NaturalBornCamper объяснил PDO в своем ответе, поэтому я покажу, как это сделать с MySQLi ( MySQL Improved ), используя mysqli_insert_id .
Ознакомьтесь с документацией PHP для получения дополнительных примеров: http://php.net/manual/en/mysqli.insert-id.php
источник
Я просто хочу добавить небольшую деталь относительно
lastInsertId()
;При вводе более одной строки за раз, он не возвращает последний идентификатор , а первый идентификатор коллекции последних вставок.
Рассмотрим следующий пример
Здесь происходит то, что я толкаю
my_table
два новых ряда. Идентификатор таблицы - автоинкремент. Здесь для одного и того же пользователя я добавляю две строки с разнымиvarNumb
.Возвращаемое значение в конце будет равно идентификатору строки где
varNumb=1
, что означает не идентификатор последней строки, а идентификатор первой строки, добавленной в последнем запросе.источник
Пример.
В строке кода
$course_id = $query_new->insert_id;
будет отображаться идентификатор последней вставленной строки. Надеюсь это поможет.источник
Попробуйте вот так, вы можете получить ответ:
Посмотрите на следующие ссылки:
http://www.w3schools.com/php/func_mysqli_insert_id.asp
http://php.net/manual/en/function.mysql-insert-id.php
Также обратите внимание, что это расширение устарело в PHP 5.5 и удалено в PHP 7.0
источник
Я нашел ответ в приведенной выше ссылке http://php.net/manual/en/function.mysql-insert-id.php
Ответ:
источник
mysql
ответ, никогда не используйте его.Попробуйте это ... это сработало для меня!
источник
Другой возможный ответ будет:
Когда вы определите таблицу со столбцами и данными, она будет иметь. Идентификатор столбца может иметь свойство AUTO_INCREMENT .
С помощью этого метода вам не нужно беспокоиться об идентификаторе , он будет сделан автоматически .
Например (взято из w3schools )
Надеюсь, это будет полезно для кого-то.
Редактировать: это только часть, где вы определяете, как сгенерировать автоматический идентификатор, чтобы получить его после создания, предыдущие ответы до этого являются правильными.
источник