Search code examples
javascriptjquerysqlarrayssql-in

Passing Array Parameter to SQL command javascript


I'm trying to pass a dynamic array to a executeSql. I'm passing the SQL to the IN as array.

let lor_text_Array = [];
if (lor_text == "TEST 1, 2, 3") {
    lor_text_Array = ["TEST 1", "TEST 2", "TEST 3"];
}
else {
    lor_text_Array.push("TEST 4")
    lor_text_Array.push("TEST 5")
}

let sql_query = 'SELECT * FROM SUBMISSION WHERE REV IN (' + lor_text_Array + ')ORDER BY ID DESC'; 
app.db.transaction(function (tx) { tx.executeSql(sql_query, [], loadItemsSYNCED, app.onError);});

however an error occured while executing sql Error object Object


Solution

  • Assuming that your string values do not contain embedded single quotes, you use map and join to generate the IN list, as follows:

    let lor_in_list = lor_text_Array.map(function (a) { return "'" + a + "'"; }).join(",");
    let sql_query = 'SELECT * FROM SUBMISSION WHERE REV IN (' + lor_in_list + ')ORDER BY ID DESC';
    

    To handle possible embedded single quotes:

    let lor_in_list = lor_text_Array.map(function (a) { 
        return "'" + a.replace("'", "''") + "'"; 
    }).join(",");