在Nodejs和Sqlite3中使用输入准备语句

时间:2015-12-17 16:00:02

标签: node.js sqlite

我正在尝试使用NodeJS中的sqlite3包从我的数据库中读取。在我的代码中:

 var sqlite = require('sqlite3');
 var db = new sqlite.Database('myDatabase.db');

 var someUserInput = 'Some given id by the user';

 db.all(
     'SELECT * FROM MyTable WHERE userId="' + someUserInput + '"',
     function(err, rows) { /* Do something here */});

我希望能够正确地准备语句,而不是直接添加用户输入,以避免来自用户的任何恶意输入。

我试过了:

 db.prepare('SELECT * FROM MyTable WHERE userId=?', someUserInput).sql

但这仍然让我:

'SELECT * FROM MyTable WHERE userId=?'

没有替换输入。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你的db.all调用差不多了。尝试将您的用户值作为参数传递:

db.all(
     'SELECT * FROM MyTable WHERE userId=?',
     someUserInput,
     function(err, rows) { /* Do something here */});

来源: https://github.com/mapbox/node-sqlite3/wiki/API#databaseallsql-param--callback