【问题标题】:why does it states that my sql statement needs no parameters为什么说我的sql语句不需要参数
【发布时间】:2018-05-13 08:50:36
【问题描述】:
`do $$declare temp_id integer;
begin;
insert INTO public.logindetails(email, pass, dept, designation, status) VALUES($1, $2, $3, $4, $5);
select login_id into temp_id from public.logindetails where email = $1;
INSERT INTO public.studentdetails(login_id, curr_year, enroll_no,full_name) VALUES (temp_id, $6, $7, $8);
end $$;`

这是我试图在我的 express 应用程序中执行的 sql 语句。 这是我的服务器端发布端点。 下面是我的客户端js:

我得到的错误是: 我试过在 postgreSQL 的 gui 中做它,它工作正常: 任何人都可以找出解决方法或我出错的部分以及解决方案。

看看这是否有帮助: 非常感谢您的帮助。

【问题讨论】:

  • hash的实现是什么?密码散列看起来很可疑。无论如何,它是DO。无法参数化这些。使用INSERT … RETURNING 避免SELECT
  • @Ry- 为什么这个散列看起来很可疑? 2)谢谢我找到了解决方案:WITH getID AS ( INSERT INTO public.logindetails(email, pass, dept, designation, status) VALUES($1, $2, $3, $4, $5) RETURNING login_id ) INSERT INTO public.studentdetails(login_id, curr_year, enroll_no, full_name) SELECT login_id, $6, $7, $8 FROM getID;如果您有更好的解决方案,请提供更好的解决方案。
  • 很高兴您找到了解决方案!回复:散列:盐太大了。你的意思是 128 位而不是 128 字节?
  • 是的,我的意思是 128 位是否被视为字节?因为告诉我使用 pbkdfsync 的人告诉我它需要一些位。
  • 是的,它需要一个字节数。

标签: node.js postgresql express plpgsql pgpool


【解决方案1】:

我找到了解决这个问题的方法,因为@Ry- 的评论给了我一个方向,thisthis 帮助我进一步解决了这个问题。
解决方案:
如果您必须像我一直在尝试的那样做陈述,那么解决方法是:

使用 getID 作为(插入 public.logindetails(电子邮件、通行证、部门、职务、身份)值(1 美元、2 美元、3 美元、4 美元、5 美元)返回 login_id)
插入 public.studentdetails(login_id、curr_year , 注册号, 全名) SELECT login_id, $6, $7, $8 FROM getID;

然后根据需要传递参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多