У меня есть таблица, в которой новые данные часто вставляют. Мне нужно получить последний идентификатор в таблице. Как я могу это сделать?
Это похоже на `выберите Max(ID) из таблицы?
Если вы'повторного использования PDO, использовать методом PDO::lastInsertId
.
Если вы're, используя mysqli, то использовать в mysqli::$insert_id
.
Если вы'вновь еще используете MySQL:
*пожалуйста, Дон'функции Т использовать mysql_ на код**. Они уже не выдерживают и официально осуждается. Смотрите красная коробка? Узнать о подготовка отчетности вместо этого, и использовать постановления или тема - в данной статье поможет вам решить, какой. Если вы выберете ПДО, вот хороший учебник.
<суб>но если вы должны использовать mysql_insert_id
.</суб>
есть функция, чтобы знать, что последнее ИД вставленной в текущем соединении
mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();
плюс использования Макс - это плохая идея, потому что это может привести к проблемы если код используется одновременно в двух разных сессиях.
Эта функция называется mysql_insert_id
С ПДО:
$pdo->lastInsertId();
С в mysqli:
$mysqli->insert_id;
*Пожалуйста, Дон'функции Т использовать mysql_ на код**. Они уже не выдерживают и официально осуждается. Смотрите красная коробка? Узнать о подготовка отчетности вместо этого, и использовать постановления или тема - в данной статье поможет вам решить, какой. Если вы выберете ПДО, вот хороший учебник.
То, что ты написал бы вам наибольшее идентификатор
, предполагая, что они были уникальное и автоинкрементное, что будет хорошо, если вы хорошо с приглашением проблем параллелизма.
Поскольку вы're, используя MySQL в качестве базы данных, есть специфическая функция LAST_INSERT_ID()
, который работает только для текущего соединения, которая сделала вставку.
В PHP есть специальные функции для этого тоже называется mysql_insert_id
.
Вы можете получить последний вставленный идентификатор на mysql_insert_id встроенной в PHP функции ();
$id = mysql_insert_id();
вы также получите последние записи
$id = last_insert_id();
Это's хорошо использовать mysql_insert_id()`, но есть одно конкретное замечание о его использовании, необходимо назвать его после того, как выполнена вставка запроса, означает, в той же сессии сценарий. Если вы используете его, в противном случае он бы'т работать правильно.
Чтобы получить последний вставленный ID в CodeIgniter с
После выполнения запроса на вставку просто использовать одну функцию под названием insert_id()
в базе данных, он возвращает последний вставленный идентификатор
Экс:
$this->db->insert('mytable',$data);
echo $this->db->insert_id(); //returns last inserted id
в одной строке
echo $this->db->insert('mytable',$data)->insert_id();
Попробуйте это должно работать нормально:
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "INSERT blah blah blah...";
$result = mysqli_query($link, $query);
echo mysqli_insert_id($link);
Я предпочитаю использовать чистый синтаксиса MySQL получить последний идентификатор типа AUTO_INCREMENT таблицы я хочу.
на PHP mysql_insert_id() и в MySQL last_insert_id() дает только последние транзакции.
Если вы хотите, чтобы последний ID auto_incremented любой таблицы в схеме (не только последней сделки), вы можете использовать этот запрос
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'my_database'
AND TABLE_NAME = 'my_table_name';
Что's оно.
Примечание: Если вы сделать несколько вставок с одним заявлением в mysqli::insert_id не будет правильным.
Таблица:
создать таблицу АБВ (идентификатор тип int(11) типа AUTO_INCREMENT, название типа varchar(255), первичный ключ(идентификатор));
Теперь, если вы:
вставить в АБВ (имя) значения('Один'),('Два'),('Три');
В в mysqli::insert_id будет 1 а не 3.
Чтобы получить правильное значение:
в mysqli::insert_id + в mysqli::affected_rows) - 1
Это был документ, но это немного неясным.
Это'ы грустно не вижу никаких ответов на примере.
Использование в mysqli::$insert_id:
$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$mysqli->query($sql);
$last_inserted_id=$mysqli->insert_id; // returns last ID
Используя методом PDO::lastInsertId:
$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$database->query($sql);
$last_inserted_id=$database->lastInsertId(); // returns last ID
Используя транзакции в mysqli иногда я вовсе'т получишь в mysqli::$insert_id, потому что это возвращается 0. Особенно если я использую хранимые процедуры, что выполнение
режущей пластины. Поэтому есть другой путь в сделке:
<?php
function getInsertId(mysqli &$instance, $enforceQuery = false){
if(!$enforceQuery)return $instance->insert_id;
$result = $instance->query('SELECT LAST_INSERT_ID();');
if($instance->errno)return false;
list($buffer) = $result->fetch_row();
$result->free();
unset($result);
return $buffer;
}
?>
Я попытался
функция mysqli_insert_id($dbConnectionObj)
Это возвращает текущее соединение's в последний вставленный идентификатор, поэтому при управлении подключениями правильно это должно работать. Работал для меня по крайней мере.
Использовать тема а с MySQL является depricating
<?php
$mysqli = new mysqli("localhost", "yourUsername", "yourPassword", "yourDB");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
// Conside employee table with id,name,designation
$query = "INSERT INTO myCity VALUES (NULL, 'Ram', 'Developer')";
$mysqli->query($query);
printf ("New Record has id %d.\n", $mysqli->insert_id);
/* close connection */
$mysqli->close();
?>
По всей этой дискуссии могу предположить, что поводом для проверки Макс идентификатор, чтобы знать, что ID должен быть рядом.. (если мой Макс ИД 5 тогда следующий будет 5+1=6).
>>если это не причина, моя лучшая извинения
Если кто-то еще вставляет информацией между вашей проверки и вставкой даст вам неправильный идентификатор.
Поэтому она может быть решена, если вы хотели создать хэш, который может включать метку или другое уникальное значение.
Затем в ту же функцию можно вставить вашу информацию с пустыми значениями и ваш хэш. Что бы создать ID, если у вас есть AUTO_INCRECEMENT выбран.
Затем в этой же функции вы бы еще свой хэш, и вы могли бы искать ID с таким же хэш. И тогда вы будете заполнять пустые значения с обновлением базы данных MySQL.
Это включает в себя немного больше соединений, но это все-таки способ сделать это...
Удачи в ее решении.
Если ваша таблица имеет автоматическое приращение столбца, как идентификатор пользователя,идентификатор emp_id,.. затем вы можете использовать этот запрос, чтобы получить последней вставленной записи *Выберите from имя_таблицы где userId=(выбрать Макс(имя пользователя)from имя_таблицы)** В PHP-код:
$con = mysqli_connect('localhost', 'userid', 'password', 'database_name');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$sql = "SELECT * FROM table_name where UserID=(select MAX(UserID)from table_name)";
$result = mysqli_query($con, $sql);
Затем вы можете использовать полученные данные как ваше требование