尝试索引一个nil值(本地“结果”)

时间:2019-09-11 20:02:33

标签: lua

当一名玩家加入律师时,我正在为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) 

1 个答案:

答案 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