MySQL查询使用INSERT和WHERE,可能吗?

ffscu2ro  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(153)

我需要使用PHP从HTML表单将值插入数据库中的表。查询之后

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

记录创建良好。输入字符串是为了证明查询的有效性,实际的查询使用的是带有数据的变量,这些数据存储在html表单用户输入的位置。
我使用了一个查询来存储customer表中customerID(auto_increment'ed)的值。我还使用$_SESSION ['UserName']来存储customer表中用户的用户名。从html表单用户输入创建的所有变量都被正确存储,因为它们都可以被回显。
我的问题出现在尝试使用以下查询时“

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

已从$UserName = $_SESSION ['UserName']创建$UserName。
如果要创建的记录依赖于另一个表中的列,是否不能在查询中使用WHERE?
对不起,如果这没有意义,我已经尽力解释了,但我是MySQL和PHP的新手。

w8biq8rn

w8biq8rn1#

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生成一行。

相关问题