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 值)”有关。

如果我尝试在 con 上直接运行 SELECT * execute 它工作正常,因此正在建立连接,但是这个 prepare 语句不起作用(它甚至没有将 prepare 识别为有效方法,似乎)。

4

1 回答 1

5

看起来该prepare功能是在过去一两年内添加到 LuaSQL 中的,所以也许你的版本有点旧?

另外,尝试con:escape(yourQuery)进行转义,也许这足以满足您的需求。

于 2011-06-12T00:12:26.800 回答