2016-07-07 6 views
0

私は文を持って準備しますエスケープパーセント記号は、ステートメント

(デシベルはsqlite3のインスタンスである)

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

をしかし、私はこのエラーを取得:

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

に思えますそれは見ていない?パラメータとして使用します。私は百分率記号の%%から\と\へのエスケープを試みました。

誰でもこの問題を解決する方法を知っていますか?ありがとうございました!

答えて

2

あなたは引用符内のパラメータを置くことはできません。

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

を引用符で、それは疑問符が含まれているだけの文字列です。引用符がなければ、それはプレースホルダーです。

あなたはLIKEを細分化する必要があります。

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