2015-11-29 31 views
0

我試圖運用我在LUA表中的內容代碼SQL在Clua_tostring不能在SQL函數工作在C代碼

我的LUA文件具有下面的代碼:

prepare_sql = { 
    flvdb = "flv_database"; 
}; 

我的Lua代碼如下:

lua_getglobal(L, "prepare_sql"); 
lua_getfield(L, -1, "flvdb"); 
p->flvdb = lua_tostring(L, -1); 

應用Lua代碼之前,我的C代碼工作正常:

sql_prepare(SqlPrepare *stax, const char *qry, ...); 

前:

if(SQLPASS != sql_prepare(sqltp, "INSERT INTO `flv_database` (`date`, `value`, `count`) VALUES (NOW(), '%d', '%d')", p->value, p->cnt)) 

後:

if(SQLPASS != sql_prepare(sqltp, "INSERT INTO `%s` (`date`, `value`, `count`) VALUES (NOW(), '%d', '%d')", p->flvdb, p->value, p->cnt)) 

之前的代碼運行良好,應用LUA他無法捕捉到該文件中的名稱後。有沒有人有什麼想法?

+0

嘗試'printf(「%s」,p-> flvdb)'看看裏面有什麼 – nonchip

+0

我忘記提到這一點,但我做到了,它返回了正確的名稱,等於在文件中,但是當你應用sql函數不起作用 – Chozie

+0

你不需要做''prepare_sql = {'「而不是''prepare_sql {'」?這只是你的問題中的拼寫錯誤嗎? –

回答

2

因爲您無法使用變量表名稱準備查詢。 你的Lua代碼沒問題。

+0

所以他們需要一些複雜的(可能仍然錯誤地逃跑)sprintf魔法? – nonchip

+1

@nonchip也許是sql_escape + sprintf – marsgpl