在 node.js 应用程序中使用参数中的变量从 sqlite 数据库中查询数据

Posted

技术标签:

【中文标题】在 node.js 应用程序中使用参数中的变量从 sqlite 数据库中查询数据【英文标题】:Using a variable in parameters to query data from sqlite database in a node.js application 【发布时间】:2019-01-30 12:07:16 【问题描述】:

所以我正在使用 discord.js 制作一个不和谐的机器人,但不太清楚如何去做,已经环顾了一段时间。

    var server = member.guild.id;
    db.all("SELECT channelMessage FROM userHelp WHERE serverId = server", function(err, rows)
            rows.forEach(function (row) 
                console.log("Message is " + channelMessage);
            )
        );

我知道这不会真正起作用,但这基本上是我的目标,第 2 行中的“WHERE”子句使用先前定义的变量作为其参数。 老实说,我非常缺乏经验,因此非常感谢任何帮助。

谢谢!

【问题讨论】:

阅读this教程。 【参考方案1】:

只要server 变量不是来自用户输入,您就可以将其插入到您的查询字符串中。在较新版本的 javascript(我相信 es2015 及更高版本)中,您应该能够做到:

var server = member.guild.id;

db.all(`SELECT channelMessage FROM userHelp WHERE serverId = $server`, ...)

【讨论】:

给未来读者的重要提示:此答案中的第一句话是critical。如果您无法完全控制 server 变量值,则此代码可能会受到 SQL 注入的影响。 SQL注入问题超出了上述问题的范围,因此仅在此答案的第一句话中随便提及。这是字符串插值的演示,not 查询参数。 (此注释留在这里是因为另一个答案试图链接到这个作为如何使用查询参数的示例,这个答案没有演示。)

以上是关于在 node.js 应用程序中使用参数中的变量从 sqlite 数据库中查询数据的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 和数据库变量中的回调 [重复]

保持生成过程中的 Node.js 结果有序

NPM库:dotenv,从文件加载环境变量

如何从 Node Js 服务器中的查询字符串中获取 id 或任何变量数据?

将 Mongoose DB 中的值添加到 Node.js 中的变量中

Node.js:如何将全局变量传递到通过 require() 插入的文件中?