【问题标题】:postgresql error: column "" does not exist in where clausepostgresql 错误:where 子句中不存在列“”
【发布时间】:2019-12-18 11:12:46
【问题描述】:

我正在尝试检查电子邮件是否已经存在,并且我正在电子邮件参数中发送 daniyal@gmail.com,但收到错误列“daniyal”不存在。

ctx.app.pool.query("SELECT * FROM users WHERE email = " + ctx.request.body.email, (err, result) => {
            if (err) {
                ctx.body = {
                    status: 500,
                    message: 'Something went wrong'
                };
                console.log('Query Error: ', err);
                throw err
            } else {
                ctx.body = {
                    exceptions: "",
                    status: 200,
                    error: false,
                    message: "user already exists with this email",
                };
            }
        });

【问题讨论】:

  • 学习使用参数!这将防止将来出现难以调试的语法错误。

标签: javascript sql node.js postgresql koa


【解决方案1】:

您的直接问题是您在传递的值周围缺少单引号(因此,Postgres 将其视为列名)。

但是为此,您确实想要使用参数化查询,既安全又高效

ctx.app.pool.query(
    "SELECT * FROM users WHERE email = ?", 
    [ctx.request.body.email], 
    function(err, result) => {
        if (err) {
            ctx.body = {
                status: 500,
                message: 'Something went wrong'
            };
            console.log('Query Error: ', err);
            throw err
        } else {
            ctx.body = {
                exceptions: "",
                status: 200,
                error: false,
                message: "user already exists with this email",
            };
        }
    }
);

【讨论】:

  • 获取查询错误:错误:输入末尾的语法错误
  • 我刚刚删除了console.log并抛出错误。为什么我不去其他部分,电子邮件已经存在?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2019-01-14
  • 2021-12-24
  • 2013-02-28
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多