mysqli查询使用insert-into和where,可能吗?

wtzytmuj  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(365)

我需要使用php从html表单向数据库中的表中插入值。在查询之后

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

这张唱片做得很好。输入这些字符串是为了证明查询是有效的,实际的查询使用变量,这些变量的数据存储在html表单用户输入的地方。
我使用了一个查询来存储customerid(auto\ u increment'ed)在customer表中的值。我还使用$\u 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已从$username=$\u会话['username']创建。
如果要创建的记录依赖于另一个表中的列,是否不能在查询中使用where?
抱歉,如果这没有意义,我已经试图解释尽可能好,但我是新的mysql和php。

ldioqlga

ldioqlga1#

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 基于示例中的一些常量,以及另一个表中的列。

相关问题