mardi 3 novembre 2015

Tcl SQLite update variable substitution cannot have apostrophe

Here's the problem: if I use { } for the update command like so:

package require sqlite3
fileRepo eval {UPDATE uploads SET $col=$data WHERE rowid=$id}

I cannot substitute any variables inside the curly brackets. it all has to be hard coded.

However, if I use " " for the update command like so:

fileRepo eval "UPDATE uploads SET $col='$data' WHERE rowid=$id"

I can substitute variables inside the double quotes, but I must use ' ' in order to put in data with spaces so sql sees it as one input. If I don't I get an error if I send something like

$data = "Legit Stack"

Because it has a space the sql will choke on the word: Stack unless it is placed within single quotes

Therefore...

If I send this data to the update command:

$col = description
$data = "Stack's Pet"

I get the following error:

near "s": syntax error while executing "fileRepo eval "UPDATE uploads SET $col='$data' WHERE rowid=$id" ...

Thus given these rules I can see no way to pass a single quote or apostrophe to the update command successfully. Is there a different way to do this?

Thanks!

Aucun commentaire:

Enregistrer un commentaire