【发布时间】:2019-11-07 22:10:58
【问题描述】:
我有一个 lessons 表,其中包含以下字段:
id title type language level
用户可以通过界面选择自己想开的女巫课程。
他会开始选择语言,然后是类型,最后是关卡。
在此过程中,我想使用单个 sql 语句查询数据库,但当然第一个查询将只有语言字段。我想出了这个语法,但它不起作用:
function queryLessonList (language, type, level){
const values = [language, type, level];
const sql = "SELECT * FROM lessons WHERE (language=?) AND (? is null OR type=?) AND (? is null OR level=?)";
return query(sql, values);
}
我怎样才能让它工作?
【问题讨论】:
-
你在正确的轨道上。您可以在您使用的框架中使用命名参数对查询进行参数化吗?如果不是,那么
type=coalesce(?,type)之类的内容将允许您只输入一次问号。 -
也许让你的值数组等于 [language, type, type, level, level] 以便你使用相同数量的参数来检查
-
Brody,谢谢,解决了这个问题。没想到参数号不匹配!