Lua MySQL, нужен способ избежать данных - PullRequest
3 голосов
/ 12 июня 2011

Мне нужен способ экранирования данных для операторов mysql в lua. Я привык делать что-то вроде mysql_real_escape_string () в php, но не могу найти эквивалент в lua, используя mysql (con: escape () работал, когда я использовал sqlite3). Я читал, что подготовленные заявления - это решение, но оно мне не подходит. Что я делаю не так?

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 »(нулевое значение)».

Если я пытаюсь запустить прямое выполнение SELECT * на con, оно работает нормально, поэтому соединение устанавливается, но этот оператор prepare не работает (кажется, что он даже не распознает подготовку в качестве допустимого метода).

1 Ответ

5 голосов
/ 12 июня 2011

Похоже, что функциональность prepare была добавлена ​​в LuaSQL за последние год или два, так что, возможно, ваша версия немного старше?

Кроме того, попробуйте con:escape(yourQuery) сделать выход, возможно, этого будет достаточно для ваших нужд.

...