【问题标题】:MySQL Insert query failingMySQL插入查询失败
【发布时间】:2016-06-21 02:49:15
【问题描述】:

我正在使用backand.com 进行查询,如果尚未使用电子邮件,则尝试在用户表中创建记录:

INSERT INTO users (email, firstName, lastName, password)
SELECT * FROM (SELECT '{{email}}', 'test', 'person', '{{password}}') AS tmp
WHERE NOT EXISTS (
    SELECT email FROM users WHERE email = '{{email}}'
) LIMIT 1;

它可以验证,但是当我使用参数运行它时:

email: dave@gmail.com
password: test

我得到错误:

发生错误,请重试或联系管理员。错误详情:重复的列名“test”

为什么会失败?没看懂。

谢谢。

【问题讨论】:

  • 请把 '' 改成 `` 试试看。
  • 没有骰子 - 同样的错误

标签: mysql insert not-exists backand


【解决方案1】:

问题是您使用'test' 作为密码,因为您已经将'test' 作为名字。由于您没有提供列别名,因此常量值的字段名称来自常量本身。解决方案:为子选择中的所有 4 个字段提供显式别名:

SELECT '{{email}}' as email, 'test' as firstName, 'person' as lastName, '{{password}}' as pwd

【讨论】:

  • 谢谢,这更正了问题。如果成功,我将如何修改查询以返回新 ID?
  • 这是一个不同的问题,所以请在自己的帖子中提问,而不仅仅是作为后续评论。但在问它之前,我会搜索一个答案。我很确定这个问题已经被问过了。
  • 不用担心,我添加了 SELECT ROW_COUNT() > 0
猜你喜欢
  • 2014-11-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多