2013-03-14 2 views
1

ОК, так вот мой сценарий - вы можете не согласиться с тем, что я пытаюсь сделать, но у меня есть причины. Пользователь может загружать различную информацию в базу данных, я также хочу, чтобы они могли загружать изображение одновременно. Теперь по разным причинам я хочу сохранить изображение с именем файла идентификационным номером записи, которую я добавляю (у меня есть столбец идентификатора в качестве первичного, который автоматически увеличивает). Очевидно, мне придется также хранить расширение файла в базе данных. Теперь я могу добавить запись, а затем узнать, какой идентификатор был установлен, чтобы я мог сохранить изображение? Я не хочу запрашивать и выбирать самый высокий идентификатор, поскольку это может пойти не так, если два человека должны были отправить форму одновременно. Любые идеи?MYSQL - найдите только что добавленный номер зарегистрированной записи

ответ

1

После выполнения вставки в PHP, вы можете получить AUTO_INCREMENT ID из $mysqli->insert_id (где $ Mysqli - объект соединения MySQLi), $pdo->lastInsertId (где $ pdo - объект соединения PDO), или mysql_insert_id() (если вы все еще используете MySQL, чего вам не должно быть) без необходимости запуска другого запроса.

+0

Вы могли бы разработать? Я незнаком с pdo. – cainy393

+0

@ cainy393 что вы используете в PHP для запуска запроса? –

+0

erm ... ничего действительно mysql_query ("INSERT INTO table (Some, Stuff) VALUES (Some, Values);") – cainy393

3

LAST_INSERT_ID() даст вам ID было автоматически сгенерировано:

... возвращает значение BIGINT (64-бит), представляющее первый автоматически сгенерированного значение, которое было установлено для AUTO_INCREMENT колонков последний выполненный оператор INSERT, чтобы повлиять на столбец . Например, после вставки строки, которая генерирует значение AUTO_INCREMENT, вы можете получить значение, как это:

mysql> SELECT LAST_INSERT_ID(); 
     -> 195 
+0

Большое вам спасибо! Кажется, что это сработает. Хотя есть ли вероятность того, что если несколько человек представит форму одновременно, она может выбрать неправильную? – cainy393

+0

@ пользователь1821586 немного поиска расскажет. Пожалуйста, всегда делайте некоторые исследования перед отправкой вопроса. Попробуйте найти решение, и когда вы застряли, чем опубликовать его здесь! –

+0

@ user1821586 Он будет работать, если несколько человек отправят форму одновременно, потому что она даст вам последнее автоматически сгенерированное значение для * текущего соединения *. Поскольку каждое представление формы будет использовать другое соединение, они не будут вмешиваться. –

Смежные вопросы