Объединить ключи в одну таблицу - PullRequest
0 голосов
/ 26 мая 2020

как бы мне объединить текущую и новую завязку, которую я складываю вместе, чтобы выглядеть примерно так {"key = 69", "key = 360"} вместо этого 69, а затем он заменяет текущий при новом идентификаторе добавлено

tempkey = {}
    exports['ghmattimysql']:execute('SELECT * FROM user_properties WHERE house = @house AND number = @number', {['@house'] = house, ['@number'] = number}, function(rows)
        for k,v in pairs(rows) do
            if tonumber(v.perm) ~= nil then
                if tonumber(v.perm) < 0 then
                    tempkey[#tempkey+1] = {v.perm.. " " ..id}
                else
                    tempkey[#tempkey+1] = {id}
                end
            end
        end
        exports['ghmattimysql']:execute('UPDATE user_properties SET perm = @perm WHERE house = @house AND number = @number', {
            ['@house'] = house, 
            ['@number'] = number, 
            ['@perm'] = tempkey
        })
    end)

1 Ответ

0 голосов
/ 09 июня 2020

Непонятно, что именно вы пытаетесь сделать, и мало контекста для того, что делает код. Можете ли вы подробнее рассказать о том, что вы пытаетесь сделать? Например, откуда вы получаете id? Как должен выглядеть tempkey?

Вы также используете таблицу в качестве аргумента для этого MySQL запроса, что я не считаю правильным. Я предполагаю, что этот запрос вернет только один результат?

Предполагаю, что perm должно быть строкой чисел («69 360»). Если это так, вы должны объединить их в строку, подобную этой.

tempkey = ""
exports['ghmattimysql']:execute('SELECT * FROM user_properties WHERE house = @house AND number = @number', {['@house'] = house, ['@number'] = number}, function(rows)
    for k,v in pairs(rows) do
        if tonumber(v.perm) ~= nil then
            if tonumber(v.perm) < 0 then
                tempkey = v.perm .. " " .. id
            else
                tempkey = id
            end
        end
    end
    exports['ghmattimysql']:execute('UPDATE user_properties SET perm = @perm WHERE house = @house AND number = @number', {
        ['@house'] = house,
        ['@number'] = number,
        ['@perm'] = tempkey
    })
end)

Кроме того, если этот запрос предназначен только для возврата одного результата, вы можете сделать что-то подобное, чтобы избежать ненужного итерация по таблице rows

tempkey = ""
exports['ghmattimysql']:execute('SELECT * FROM user_properties WHERE house = @house AND number = @number', {['@house'] = house, ['@number'] = number}, function(rows)
    local data = rows[1]
    if tonumber(data.perm) ~= nil then
        if tonumber(data.perm) < 0 then
            tempkey = data.perm .. " " .. id
        else
            tempkey = id
        end
    end

    exports['ghmattimysql']:execute('UPDATE user_properties SET perm = @perm WHERE house = @house AND number = @number', {
        ['@house'] = house,
        ['@number'] = number,
        ['@perm'] = tempkey
    })
end)

Здесь он сохраняется с пробелом, но вы можете использовать запятую или что угодно. JSON, вероятно, слишком тяжелый для этой цели.

...