循环遍历数组并在javascript中向sql查询添加参数

时间:2013-12-05 19:28:08

标签: javascript sql loops

我想在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变量结合?

2 个答案:

答案 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);

小提琴:http://jsfiddle.net/7P4us/2/

答案 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函数可以返回所有次迭代...所以只看到最后一次迭代可能在你的实施中。