当一名玩家加入律师时,我正在为Fivem编写电话脚本,但出现此错误。 “脚本错误:@ phone / server / server.lua:64:尝试索引一个nil值(本地“结果”)
处理程序(@ phone / server / server.lua:581)”
我将完全空白,以解决此错误。任何将不胜感激。
第64行的代码
function getNumberPhone(identifier)
local result = MySQL.Sync.fetchAll("SELECT users.phone_number FROM users WHERE users.identifier = @identifier", {
['@identifier'] = identifier
})
if result[1] ~= nil then
return result[1].phone_number
end
return nil
第581行的代码
AddEventHandler('Phone:allUpdate', function()
local sourcePlayer = tonumber(source)
local identifier = getPlayerID(source)
local num = getNumberPhone(identifier)
TriggerClientEvent("Phone:myPhoneNumber", sourcePlayer, num)
TriggerClientEvent("Phone:contactList", sourcePlayer, getContacts(identifier))
TriggerClientEvent("Phone:allMessage", sourcePlayer, getMessages(identifier))
TriggerClientEvent('Phone:getBourse', sourcePlayer, getBourse())
sendHistoriqueCall(sourcePlayer, num)
end)
答案 0 :(得分:1)
通过在您的if语句中添加result ~= nil and
,错误应消失。
function getNumberPhone(identifier)
local result = MySQL.Sync.fetchAll("SELECT users.phone_number FROM users WHERE users.identifier = @identifier", {
['@identifier'] = identifier
})
if result ~= nil and result[1] ~= nil then
return result[1].phone_number
end
return nil
问题在于,有时您的SQL查询返回nil
,从而将result
设置为nil
。然后,您尝试访问1
上的result
上的nil
,因此会引发错误“试图索引nil值”。
要解决此问题,只需在尝试查找密钥之前确保result
不是nil
。