#php #mysql #sql
#php #mysql #sql
Вопрос:
Я пытаюсь выполнить 3 одновременные вставки в 3 таблицы, когда пользователь регистрируется на моем сайте. Вот мои таблицы:
ОБНОВЛЕННЫЙ ОТВЕТ. упростил вопрос:
Таблица 1
ControlPanelID
UserDescription
ChannelCommentsID
UserID
Таблица 2
UserID
UserName
Password
Email
Reputation
ControlPanelID
Role
Вот мои 3 инструкции insert:
$queryString=
"INSERT INTO ControlPanel VALUES("",ChannelCommentsID , userID)".
"INSERT INTO users VALUES($userNam,$pass,$email, ,'anonym')";
Я хочу, чтобы строка идентификатора пользователя увеличивалась в обеих таблицах .. как это достигается?
другими словами, открытие соединения с базой данных дважды … (т.Е. 2 запроса)?
Комментарии:
1. ваша схема не является третьей нормальной формой ER! : S
2. в принципе, это то, что я хочу.. Пользователь заполняет форму, … создаются его имя и данные, затем идентификатор пользователя увеличивается на 1. Но я хочу, чтобы идентификатор пользователя также увеличился на 1 в панели управления. Как это сделать ?!?
3. Я имею в виду, что у вас не может быть двух таблиц с этим свойством! это не очень хорошо спроектированная база данных, и тогда я думаю, что невозможно делать то, что вы хотите!
4. Конечно, это не невозможно. Просто излишне сложно. Вы возвращаете идентификатор, а затем используете его для вставки во вторую таблицу. Вы удаляете идентификатор автоматического увеличения из второй таблицы. Было бы проще и очевиднее, что происходит, если бы БД была в 3NF .
5. хорошая точка зрения. Я решил проблему.. Я удалил несколько полей, которые мне не нужны
Ответ №1:
Вы можете использовать LAST_INSERT_ID(), чтобы получить значение столбца АВТОИНКРЕМЕНТА для предыдущей вставки.
В вашем конкретном случае это может быть возможным решением
$queryString=
"INSERT INTO users VALUES($userNam,$pass,$email, ,'anomy')".
"INSERT INTO ControlPanel VALUES("",ChannelCommentsID , LAST_INSERT_ID())";
Комментарии:
1. Я думаю, что этого утверждения будет достаточно.. Спасибо
Ответ №2:
Поле userId в таблице 2 должно иметь атрибут AUTO_INCREMENT
, это будет обрабатывать автоматическое увеличение числа при каждой вставке новой записи.
Комментарии:
1. Извините, мне пришлось пересмотреть дизайн моей таблицы.. Я исправил это сейчас, чтобы работать !!1