我刚开始将Lua看作是访问SQLite DLL的简单方法,但在尝试使用与DB无关的LuaSQL模块时遇到了错误:
require "luasql.sqlite"
module "luasql.sqlite"
print("Content-type: Text/html\n")
print("Hello!")
请注意,我正在尝试从最基本的设置开始,因此只在工作目录中包含以下文件,而sqlite.dll实际上是从LuaForge站点重命名的sqlite3.dll :
Directory of C:\Temp <DIR> luasql lua5.1.exe lua5.1.dll hello.lua Directory of C:\Temp\luasql sqlite.dll
我错过了一些可以解释错误的二进制文件吗?
谢谢.
编辑:我将DLL重命名为其原始sqlite3.dll并更新源以反映这一点(最初重命名它,因为它是在我找到的样本中调用它的方式).
在这一点上,这是代码的样子......
require "luasql.sqlite3"
-- attempt to call field 'sqlite' (a nil value)
env = luasql.sqlite()
env:close()
...以及我收到的错误消息:
C:\>lua5.1.exe hello.lua
lua5.1.exe: hello.lua:4: attempt to call field 'sqlite' (a nil value)
编辑:发现它是什么:env = luasql.sqlite3()而不是env = luasql.sqlite().
对于像我这样的新手,这里是最新的SQLite LuaSQL驱动程序的完整示例:
require "luasql.sqlite3"
env = luasql.sqlite3()
conn = env:connect("test.sqlite")
assert(conn:execute("create table if not exists tbl1(one …我需要一种方法来逃避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"
这种错误与"尝试调用方法'准备'(零值)".
如果我尝试在con上运行一个直接的SELECT*执行它工作正常,所以正在建立连接,但是这个prepare语句不起作用(它甚至不认为准备好作为一个有效的方法,似乎).
我尝试按照http://www.keplerproject.org/luasql/examples.html上的示例进行操作
Lua 5.2.0  Copyright (C) 1994-2011 Lua.org, PUC-Rio
> require "luasql.postgres"
> env = assert (luasql.postgres())
stdin:1: attempt to index global 'luasql' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: in ?
> 
我错过了什么?
TL;DR:你可以跳到这里。我试图使用 luarocks 安装程序,但 apt-get 安装程序没有问题。
我在 Ubuntu 上安装 luaSQL 时遇到问题。我需要它用于使用luasql = require "luasql.mysql". 我遵循了可以在这里找到的官方文档:http : //keplerproject.github.io/luasql/doc/us/
我尝试过的(以及官方文档建议的):
sudo luarocks install luasql-mysql
给了我以下输出:
Error: Could not find expected file mysql.h for MYSQL -- 
you may have to install MYSQL in your system and/or pass MYSQL_DIR or 
MYSQL_INCDIR to the luarocks command. Example: luarocks install luasql-mysql
MYSQL_DIR=/usr/local
所以我首先必须得到 mysql.h 文件。经过一番谷歌搜索后,我发现了这一点:
sudo apt-get update
sudo apt-get install libmysqlclient-dev 
所以我再次尝试了我的第一个命令,但将 mysql.h 文件的位置作为参数:
sudo luarocks install luasql-mysql …