несколько запросов на вставку и промежуточная передача переменных. mysql и php

#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