3

lua で mysql ステートメントのデータをエスケープする方法が必要です。私はphpでmysql_real_escape_string()のようなことをすることに慣れていますが、mysqlを使用してluaで同等のものを見つけることができません(sqlite3を使用していたときにcon:escape()が機能しました)。準備されたステートメントが解決策であると読みましたが、うまくいかないようです。私は何を間違っていますか?

require "luasql.mysql"
env = assert (luasql.mysql())
con = env:connect("db_name", "user", "pass", "localhost")
local stmt = con:prepare([[
    SELECT * FROM `user` 
    WHERE `login` = :a AND `pass` = :b LIMIT 1
]])
stmt.a = "some_user"
stmt.b = "some_pass"

このエラーは、「メソッド 'prepare' を呼び出そうとしています (nil 値)」です。

ストレート SELECT * execute on con を実行しようとすると正常に動作するため、接続は確立されていますが、この準備ステートメントは機能しません (準備を有効な方法として認識していないようです)。

4

1 に答える 1

5

LuaSQLにprepare機能が追加されたのはここ 1 年か 2 年くらいのようですが、バージョンが少し古いのではないでしょうか?

また、con:escape(yourQuery)エスケープを試してみてください。おそらくそれで十分です。

于 2011-06-12T00:12:26.800 に答える