Перенос значений строк из MYSQL после отправки формы - PullRequest
1 голос
/ 04 июня 2009

Каков наилучший способ переноса автоматически увеличенного идентификатора из одной формы в другую?

У меня есть 3 таблицы (пользователи, резиденции и users_residences). Я хочу, чтобы пользователь зарегистрировался, был добавлен в таблицу пользователей, перенаправлен в форму, чтобы создать место жительства, которое добавит строку в таблицу мест жительства и одновременно добавит идентификатор строки вкладки места жительства и идентификатор строки таблицы пользователей в users_residences таблица.

Я играл с сегментами uri, но не могу придумать, как сохранить (или позвонить) только что добавленный идентификатор пользователя для использования во второй форме.

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

Я довольно новичок в программировании, поэтому не стесняйтесь говорить мне, что я провалился, но, по крайней мере, покажите мне, в каком направлении я могу изучить некоторые из этих понятий.

Спасибо
Al

Ответы [ 5 ]

1 голос
/ 04 июня 2009

Я бы сказал, что вам лучше использовать сеансовый ключ в таблице пользователей; это более безопасно (при условии, что вы делаете это через https).

Хранение значения в скрытом поле легко манипулировать с точки зрения безопасности. Если ваши поля используют автоинкремент, также легко угадать, каким будет следующее. Пользователь может просто притвориться следующим зарегистрированным пользователем и получить информацию о нем. Вы также предоставляете информацию о том, что идентификаторы других пользователей, сколько пользователей зарегистрировано для вашего сайта и т. Д.

Кроме того, если вы не планируете делать что-то ajaxy, я не уверен, что есть большой выбор; пользователь будет нажимать кнопку «Отправить», перенаправляться на другую веб-страницу, пока происходит сохранение, единственная информация, которая может быть передана, - это URL, на который вы будете перенаправлять их, или сеанс. Вы можете передать его в URL-адресе, но у него также могут возникнуть вышеуказанные проблемы.

0 голосов
/ 04 июня 2009

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

как:

$ this-> db-> trans_start ();
.. (ЗАПРОСЫ) ...
$ This-> db-> insert_id ();
.. (ЗАПРОСЫ) ...
$ this-> db-> trans_complete ();

С уважением,
@ Pcamacho

0 голосов
/ 04 июня 2009

Вы можете позвонить

 $id = mysql_insert_id();

сразу после выполнения оператора вставки, чтобы получить последний идентификатор, сгенерированный базой данных для поля автоинкремента. Возвращает 0, если инструкция не сгенерировала идентификатор. Эта страница объясняет более подробно.

Вы можете использовать этот идентификатор в следующей форме

 <input type="hidden" value="<?= $id ?>"/>
0 голосов
/ 04 июня 2009

В MySQL вы можете получить идентификатор последней вставленной строки с помощью этого оператора:

select LAST_INSERT_ID();

Затем вы можете передать это значение в ваших формах или сеансе для будущих вставок.

0 голосов
/ 04 июня 2009

Во второй форме вы можете указать:

<input type='hidden' name='user_id' value='whatever' />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...