尝试索引空值(本地'result')

我正在为Fivem编写电话脚本,当玩家加入委员会时,出现此错误。 "SCRIPT ERROR: @ phone / server / server.lua:64:尝试索引nil值(本地'result')

handler(@ phone / server / server.lua:581)",

我完全没有想到修复此错误的方法。任何帮助都将不胜感激。

来自第64行的代码

function getNumberPhone(identifier)
  local result = MySQL.Sync.fetchAll(“SELECT users.phone_number FROM users WHERE users.identifier = @identifier”,{
      [ '@身份证'] =标识符
  })
  如果result [1]~=nil,则返回result [1] .phone_number
  end
  返回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)

```

点赞
用户3902590
用户3902590

通过在 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。然后您尝试在 result 上访问 1,它是nil,因此会引发“尝试对 nil 值进行索引”的错误。

为了解决这个问题,只需在尝试查找其键之前确保 result 不是 nil

2019-09-11 21:17:43