2016-07-07 14 views
0

Ich habe eine Erklärung:Escaping Prozentzeichen in Lua Sqlite3 Statement vorbereiten

(db ist eine sqlite3 Instanz)

local stmt = db:prepare("SELECT id, name FROM table WHERE name LIKE '%?%'") 
if stmt:bind_values("test") == sqlite3.OK then 
    .... 
end 

Allerdings bekomme ich diesen Fehler:

Incorrect number of parameters to bind (1 given, 0 to bind) 

Es scheint, es sieht nicht das? als ein Parameter. Ich habe alle Arten von Flucht aus %% für die Prozentzeichen zu \ und \ und darüber hinaus versucht ... mich verrückt zu machen.

Wer weiß, wie man das beheben kann? Vielen Dank!

Antwort

2

Sie können keine Parameter in Anführungszeichen setzen:

correct:  SELECT ... WHERE foo = ? 
incorrect: SELECT ... WHERE foo = '?' 

Mit Anführungszeichen, es ist nur eine Zeichenfolge, die ein Fragezeichen enthält. Ohne die Anführungszeichen ist es ein Platzhalter.

Sie müssen die LIKE in Stücke, z.

... WHERE foo LIKE '%' || ? || '%'