我正在尝试使用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=?'
没有替换输入。
谢谢!
答案 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