我想在Javascript中为一个变量分配一个sql sting。但我想循环一个数组来构建sql语句的par。
static sql:
var tag = [fun, beach, sun];
var sql = "SELECT * FROM myTable "
+"WHERE id > 5" //...
// loop through tag array and add to the sql
function tagQuery(tag) {
for (var i = 0; i < tag.length; i++) {
var tagQuery = "AND WHERE tags like %'"+tag[i]+"'%";
return tagQuery;
};
}
我不清楚如何将每个tagQuery函数的结果添加到sql sting中?
编辑:或许更明确的问题是:如何让tagQuery函数的每次迭代与sql变量结合?
答案 0 :(得分:2)
var tag = [fun, beach, sun];
var sql = "SELECT * FROM myTable WHERE id > 5";
function tagQuery(tag) {
var str = '';
for (var i = 0; i < tag.length; i++) {
str += " AND tags like '%" + tag[i] + "%' "
}
return str;
}
sql += tagQuery(tag);
答案 1 :(得分:0)
编辑:
在您评论后,我完全取出了tagQuery
功能:
sql += tagQuery(tag); ...will only return the last iteration of the tagQuery loop
var tag = ['fun', 'beach', 'sun'];
var sql = "SELECT * FROM myTable WHERE id > 5";
if (tag[0] != null) {
sql += " AND (tags like '%" + tag[0] + "%' ";
}
if (tag[1] != null) {
for (var i = 1; i < tag.length; i++) {
sql += " OR tags like '%" + tag[i] + "%' ";
}
}
if (tag[0] != null) {
sql += ")";
}
但请注意:Rusty在评论中添加的jsFiddle链接表明,tagQuery函数可以返回所有次迭代...所以只看到最后一次迭代可能在你的实施中。