2010-11-09 3 views
0

Мне нужно получить идентификатор (столбец) из последней строки, вставленной в таблицу. Мне интересно, есть ли способ каким-либо образом внедрить это в другой запрос, чтобы избежать двух разных запросов? Это кажется намного проще, и я считаю, что видел его где-то раньше.PHP & Mysqli - Несколько запросов в одном?

Что-то вроде этого:

$query = "INSERT INTO a_table (x, y) VALUES ((SELECT id FROM another_table ORDER BY id DESC), 'y...')"; 

Любые идеи, как сделать это? Спасибо.

ответ

1

Если вы хотите получить новейшую запись, созданную вашим сценарием, вы никогда не должны делать это в первую очередь. Что делать, если другой экземпляр вашего скрипта создал запись одновременно?

mySQL LAST_INSERT_ID() вернет последний идентификатор, созданный по этому конкретному соединению. Однако вы должны вызвать его сразу после инструкции insert.

Если получение наивысшего идентификатора - это буквально то, что вы хотите, ответ GSto будет работать для вас.

0

Да, MySQL имеет вставку .. ЗЕЬЕСТ:

пример:

INSERT INTO a_table (х, у) SELECT, идентификатор, 'у' ОТ another_table ORDER BY DESC ид

хотя имейте в виду, что если у вас нет поля auto_incrementing ID, предложение order by здесь бессмысленно.

+0

Я изучу это. И да, я установил поле ID для автоматического увеличения. В противном случае я бы не увидел точку с идентификатором? Я имею в виду, что идентификатор должен быть уникальным, и вам не нужно проверять последний идентификатор, прежде чем вставлять новую строку, это просто ... бессмысленно. Благодаря! – Anthony

+0

Как это работает, если я связываю параметры? Вот мой исходный код вставки: http://codepad.org/Yvu9SoVp, как бы сделать, чтобы выбрать идентификатор из другой таблицы и вставить его как example_id? – Anthony

+0

Да, я знаю, но мне нужно получить идентификатор из другой таблицы. Может ли кто-нибудь дать мне пример (посмотрите на этот codepad.org/Yvu9SoVp) о том, как это сделать? Было бы очень благодарно. – Anthony

1
INSERT INTO a_table (x, y) VALUES (SELECT max(id), 'y...' FROM another_table); 
+0

Он на mysqli, где, похоже, нет такой функции –

+0

Не то, чтобы я знал. : / – Anthony

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