luasql中的sqlite3查询参数化变量

id_html="zzzzz"
require"luasql.sqlite3"
env=assert(luasql.sqlite3())
conn=assert(env:connect('info_db'))
cursor,res=conn:execute([[select usbkeyid from user_list where userid=id_html]])//假如我把id_html换成‘zzzzz’就可以,但是使用id_html变量就不对,请问是因为在where userid=id_html这里表示id_html变量的方式不对吗? 如果不对,那么如何在select中进行参数查询呢?试了百度的很多方法都不行,求指教,万分感谢!!
print(cursor)
print(res)
row,errorString=cursor:fetch({},"a")
while row do
print(string.format("%s",row.v))
-- reusing the table of results
row = cursor:fetch(row, "a")
end

阅读 5k
1 个回答

其实问题解决应该不难,因为在lua中[[ 字符串 ]]表示普通的字符串,它不具有变量展开的能力,你可以用2种方法构建完整且合适的sql语句字符串,
. 方法1,利用string.format,如:

--...
sqlstr = string.format("select usbkeyid from userlist where userid=%s",idhtml)
cursor,res=conn:execute( sqlstr )
--...

. 方法2,利用字符串拼接,如:

--...
sqlstr = "select usbkeyid from userlist where userid=" .. idhtml
cursor,res=conn:execute( sqlstr )
--...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进