An error occured parsing the provided SQL Statement

You must Login before you can answer or comment on any questions.

I'm having trouble inserting records into my sqlite database. This is how I create the database:

var db = Ti.Database.open('mydb');
db.execute('create table if not exists favorieten2 (pk integer primary key autoincrement, artikel_id integer null, artikel_titel text null, artikel_tekst text null, artikel_foto text null)');
And this is the query I'm trying to execute:
insert into favorieten2(artikel_id, artikel_titel, artikel_tekst, artikel_foto) values (134,'Laatste campagnedag in Frankrijk ','Vandaag is het de laatste dag voor de beslissende ronde in de Franse presidentsverkiezingen. De socialist Fran\U00e7ois Hollande beschikt nog altijd over de beste papieren: op dit moment heeft hij zo''n 5 procent voorsprong op Nicolas Sarkozy. Gisteren was de allerlaatste campagnedag. Beide kandidaten zijn tot op de laatste minuut blijven vechten voor elke stem.','img/fotos-artikels/Schermafbeelding 2012-05-15 om 18.54.03.png')
Which is generated and executed by this function
function insertFavorite(id, title, text, image) {
    var sql = "insert into favorieten2(artikel_id, artikel_titel, artikel_tekst, artikel_foto) values (";
    sql += "" + id + ",";
    sql += "'" + title.replace("'", "''") + "',";
    sql += "'" + text.replace("'", "''") + "',";
    sql += "'" + image.replace("'", "''") + "')";
    db.execute(sql);
}

2 Answers

Accepted Answer

Try

var sql = "INSERT .. VALUES(?, ?, ...)";
db.execute(sql, id, title, ...);

SQL statement is illegal due to this part: zo''n

You can escape string values with this function:

function escape (value) {
    if (value && typeof value.replace == "function") {
        return value.replace(/'/g, "''");
    }
    else {
        return value;
 
    }
};

— answered 11 months ago by Ivan Škugor
answer permalink
2 Comments
  • Ah sorry, I'm so stupid, you already escaped that. :D

    What's the error message you're getting?

    — commented 11 months ago by Ivan Škugor

  • invalid SQL statement. Error Domain=com.plausiblelabs.pldatabase Code=3

    — commented 11 months ago by Ewout Callens

Your Answer

Think you can help? Login to answer this question!