Я пытаюсь получить значение из MySQL запроса к базе данных в lua, но, похоже, я не могу либо вернуть значение, либо установить локальную переменную вне обратного вызова, единственный достигнутый мной прогресс - это возможность чтобы непрерывно передавать значение через обратные вызовы туда, где оно мне нужно, но даже тогда оно по-прежнему застряло в обратном вызове, и я не могу присвоить его другой переменной.
Это то, что у меня сейчас есть:
function Database:PrepareQuery(query, params, callback)
local pq = DBObject:prepare(query)
--pq:setOption(mysqloo.OPTION_NUMERIC_FIELDS)
-- Callback functions
pq.onSuccess = function(data)
print("Prepared Query successful!")
pcall(callback, data:getData())
end
pq.onError = function(err)
print("Prepared Query Error:", err)
end
-- Prepare the parameters
local paramsType = type(params)
if (params == NULL) then
pq:setNull(1)
elseif (paramsType == "number") then
pq:setNumber(1, params)
elseif (paramsType == "string") then
pq:setString(1, params)
elseif (paramsType == "boolean") then
pq:setBoolean(1, params)
elseif (paramsType == "table") then
for k, v in ipairs(params) do
if (v == NULL) then
pq:setNull(k)
else
local vType = type(v)
if (vType == "number") then
pq:setNumber(k, v)
elseif (vType == "string") then
pq:setString(k, v)
elseif (vType == "boolean") then
pq:setBoolean(k, v)
end
end
end
end
-- Execute the query
pq:start()
end
function DatabaseFuncs:GetCharacterName(steam_id64, callback)
local query = [[
SELECT
`character`.`first_name`,
`character`.`last_name`
FROM
`character`
WHERE
`character`.`steam_id64` = ?
;
]]
NYCRP.DB:PrepareQuery(query, steam_id64, function(result)
callback(result[1].first_name.." "..result[1].last_name)
end)
end
И я могу назвать это так:
DatabaseFuncs:GetCharacterName(ply:SteamID64(), function(characterName)
print(characterName)
end)
Но я не могу присвоить CharacterName другой переменной, я хочу быть в состоянии сделать это:
local characterName = DatabaseFuncs:GetCharacterName(ply:SteamID64())
Что означает Мне нужно вернуть значение как это:
function DatabaseFuncs:GetCharacterName(steam_id64)
local query = [[
SELECT
`character`.`first_name`,
`character`.`last_name`
FROM
`character`
WHERE
`character`.`steam_id64` = ?
;
]]
local name
NYCRP.DB:PrepareQuery(query, steam_id64, function(result)
name = result[1].first_name.." "..result[1].last_name
end)
return name
end
Но это не работает, любая помощь, пожалуйста?