【问题标题】:How do I pass in a value into a sql statement using javascript?如何使用javascript将值传递给sql语句?
【发布时间】:2019-09-14 20:35:34
【问题描述】:

我正在尝试使我的 sql 语句对于我正在开发的 API 更加安全。虽然我知道有 ORM 工具可以让这更容易,但我是新手,想了解基础知识和最佳实践。我首先创建了一个将值连接成字符串的 sql 语句。在我之前的一篇文章中建议它会使我容易受到 SQL 注入的影响。我尝试了推荐的方法,但没有成功。用作占位符的问号从未被我试图传递的值替换。

注意:虽然相关,但它不是 [Passing a node.js parameter in sql query 的重复。用法和解决方案略有不同。

任何帮助将不胜感激!

我尝试了几种方法,但每次都是?从未被取代。我可以在控制台中看到这一点。我还记录了“id”的值,以确保在函数范围内的该级别有一个值要传递。

注意:这源于以下问题:How do I insert a value into a select statement using JavaScript, specifically when using express and postgres?

这可行,但不是很安全...

    return db.query(`SELECT * FROM users WHERE id = ${id}`);

以下方法均无效...

return db.query('SELECT * FROM `users` WHERE `id` = ?',['id']);
return db.query('SELECT * FROM users WHERE id = ?',['id']);
return db.query('SELECT * FROM users WHERE id = ?',[id]);
return db.query('SELECT * FROM users WHERE id = ?',id);
return db.query(`SELECT * FROM users WHERE id = ?`,id);

每次控制台显示以下...

QUERY:  SELECT * FROM users WHERE id = ?

【问题讨论】:

标签: javascript sql node.js postgresql


【解决方案1】:

在 Node.js 中使用 $ 作为占位符而不是问号有效。

例子:

return db.query('SELECT * FROM users WHERE id = $1',[id]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2011-08-07
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    相关资源
    最近更新 更多