【发布时间】:2015-09-16 10:04:45
【问题描述】:
我正在使用 node-sqlite3 包来访问我的数据库。
我正在尝试使用以下代码从 Clients 表中获取行:
var st = db.prepare("SELECT * FROM Clients where name LIKE '%$name%'");
st.all({ $name: "test" }, function (err, rows) {
console.log("this: " + JSON.stringify(this));
if (err)
console.log(err);
else {
console.log("found: " + JSON.stringify(rows));
}
});
err 的输出是这样的:
{ [Error: SQLITE_RANGE: bind or column index out of range] errno: 25, code: 'SQLITE_RANGE' }
当我将 sql 更改为 SELECT * FROM Clients where name LIKE '%$name%' 时,查询有效并且不会引发错误。所以我想问题是,node-sqlite3 试图在作为第一个参数传递给Statement#all 的对象中找到一个名为$name% 的变量或类似的东西。
我搜索了API doc 以获得更多关于此的提示,但找不到任何提示。
我需要逃避什么吗?如何让我的查询使用命名绑定和 sql 通配符 %?
【问题讨论】: