MySQLi запрос с использованием INSERT в и где, возможно? - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно вставить значения в таблицу в моей базе данных из HTML-формы, используя PHP.По запросу

INSERT INTO tableX 
      (attractionID, customerID, number_of_people, date_of_attraction)
values ('X', 'Y', '2', '2020-12-01')

запись создается нормально.Строки были введены, чтобы продемонстрировать, что запрос работает, фактический запрос использует вместо них переменные с данными, сохраненными из пользовательского ввода html-формы.

Я использовал запрос для хранения значения для customerID (auto_increment'ed) из таблицы клиентов.Я также использую $ _SESSION ['UserName'] для хранения имени пользователя из таблицы клиентов.Все переменные, созданные из пользовательских вводов html-формы, хранятся правильно, поскольку все они могут отображаться и отображаться так, как должны.

Моя проблема возникает при попытке использовать следующий запрос "

INSERT INTO tableX 
        (attractionID, customerID, number_of_people, date_of_attraction)
 values ('X', 'Y', '2', '2020-12-01') WHERE UserName = '$UserName'

$ UserName был создан из $ UserName = $ _SESSION ['UserName'].

Разве невозможно использовать WHERE в запросе, если создаваемая запись зависит от столбца из другой таблицы?

Извините, если это не имеет смысла, я пытался объяснить как можно лучше, но я новичок в MySQL и PHP.

1 Ответ

0 голосов
/ 06 декабря 2018
Предложения

WHERE предназначены для фильтрации существующих строк из таблиц.Но INSERT работает без ссылки на любую существующую строку, поэтому WHERE не имеет смысла.Как вы узнали, это вызывает ошибку SQL.

Если вы надеетесь INSERT строк на основе строк в других таблицах, вы можете сделать это с помощью варианта INSERT, который выглядит примерно так:

 INSERT INTO tableX  
        (attractionID, customerID, number_of_people, date_of_attraction, ownerId)
 SELECT 'X', 'Y', '2', '2020-12-01', userId
   FROM users WHERE UserName = '$UserName';

Этот запрос генерирует строку для tableX на основе некоторых констант из вашего примера и столбца в другой таблице.

...