【问题标题】:MySQLi query using INSERT into and WHERE, possible?MySQLi 查询使用 INSERT into 和 WHERE,可能吗?
【发布时间】:2018-12-05 21:08:12
【问题描述】:

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

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 的新手。

【问题讨论】:

  • where 插入是没有意义的。也应该插入用户名,或者您可能需要更新。
  • INSERT INTO 插入新行。 UPDATE WHERE 更新现有行。 INSERT INTO.. ON DUPLICATE KEY 插入新行或更新与主键匹配的现有行。
  • 查看您的表格结构会很有帮助。如果您的“景点”表中有一个“用户名”列,那么您只需将用户名作为值插入,就像您对其他列所做的那样。如果你有一个单独的表,比如说“attractionUsers”,其中包含一个吸引 ID 和一个用户 ID,那么你需要插入一个关系......
  • 我不太明白你想做什么。 “插入……在哪里”会做什么?做你想做的可能是可行的,试着用英语解释一下

标签: php mysql session mysqli sql-insert


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2018-09-16
    • 2016-07-27
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多