MySQL和LUA未正确触发或代码不正确

我正在努力在我的FiveM服务器上成功触发服务器事件。或者可能已经被触发,但服务器事件不正确。但是我没有收到任何错误信息,也不知道该如何解决......

服务器端

RegisterServerEvent('carwash:pay')
AddEventHandler('carwash:pay', function()
    local _source = source
    local price = 20
    local identifier = GetPlayerIdentifier(_source)
    MySQL.Async.fetchAll("SELECT * FROM economy WHERE identifier = @identifier", {
    ['@identifier'] = identifier
    }, function(result)
        if result >= 20 then
    MySQL.Async.execute('UPDATE economy SET cash = cash - @price WHERE identifier = @identifier',
    { ['@identifier'] = identifier, ['@price'] = price }
    )
        end
    end)
end)

客户端

TriggerServerEvent('carwash:pay')
点赞
用户16931570
用户16931570

我不知道你是否还在解决这个问题,或者已经想通了,但是对于那些有相同问题的人,我将回答一下。

问题在于你正在比较一个整个表(SELECT * FROM economy...)和数字20。

此外,“fetchAll”始终会输出一个数组,因此,为了访问来自表经济的现金列,您需要使用“result[1]。现金”。

有时,“错误”并不是语法错误,您需要在这里和那里放些“print()”以了解它在哪里停止,变化或仅仅是检查问题是否解决。

例如:

RegisterServerEvent('carwash:pay')
AddEventHandler('carwash:pay', function()
    local _source = source
    local price = 20
    local identifier = GetPlayerIdentifier(_source)
    MySQL.Async.fetchAll("SELECT * FROM economy WHERE identifier = @identifier", {['@identifier'] = identifier},
    function(result)

        -- 检查结果
        print(result)

        if result >= 20 then
        MySQL.Async.execute('UPDATE economy SET cash = cash - @price WHERE  identifier = @identifier', { ['@identifier'] = identifier, ['@price'] = price })
        end
    end)
end)
2021-09-16 20:24:53