MySQL 插入查询失败

MySQL Insert query failing

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

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'

为什么会失败?没看懂。

谢谢。

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

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