【问题标题】:MYSQL Get id from Table1 and Insert to Table2 while INSERTING Values (USER Form)MYSQL 从 Table1 获取 id 并在 INSERTING 值时插入到 Table2(用户表单)
【发布时间】:2020-05-16 23:38:05
【问题描述】:

我有 2 张桌子:

表1

u_id    email
1       user1@y.com
2       user2@h.com

和 表2

id u_id values

当用户从表单输入时,必须使用 u_id 向 table2 插入值 示例:当该用户登录到 table2 时,我需要添加值 table1 u_id,即 table1 中的 id 增量和 table1 中的 u_id 以及用户从 table2 输入时的值

我尝试了这个查询但没有成功

insert into table2 (u_id,values)
            values ((select u_id from table1), 'values')

【问题讨论】:

  • 我删除了sql-server 标签,因为问题标题提到了mysql

标签: mysql sql select sql-insert


【解决方案1】:

您的查询的问题是子查询返回多行(table1 中的每行一个值),而数据库需要一个标量值。

我希望您知道当前用户的email,并希望将u_id 对应的insert 恢复为table2 中的新行以及文字值。如果是这样,我会推荐insert ... select 语法:

insert into table2 (u_id, val)
select u_id, 'foo' from table1 where email = 'user1@y.com'

旁注:values 是一个 SQL 关键字,因此不是列名的好选择(每次使用时都需要引用此标识符)。我在查询中将此列重命名为val

【讨论】:

  • foo 来自哪里。我的意思是@GMB 是什么,我也在 php 中使用会话,所以我可以写 $email where email ='$email';
  • @rsethi: (1) 'foo' 是您想在val 列中插入的任何固定值(您可以根据需要更改它)。 (2) 是的,您应该将用户电子邮件作为参数传递给查询(请注意,您最好使用参数化查询,而不是在查询字符串中连接参数)。
  • 您将如何进行参数化查询,您能否提供一些示例,牢记相同。我是新手
  • @rsethi:您可以通过搜索 php 参数化查询 之类的内容在网络上找到很多资源。你可以从[这个著名的 SO 帖子开始][stackoverflow.com/q/60174/10676716].
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多