Jump to content

Ajuda Insert Mysql


Recommended Posts

Olá atualmente estou estudando mysql, sqlite, contudo estou com dificuldade de aprender algumas coisas.

Por exemplo eu tenho uma tabela chamada: 'inventario'

Nessa tabela chamada 'inventario' tenho 3 colunas: id, playerid e items

id = AUTO_INCREMENT

playerid = Armazenamento ID Player 

items= Armazenamento Items, Facção, Slot

Na coluna 'items' da tabela 'inventario' tenho esse formato:

[ { "maconha": [ 1, 1 ], "cocaina": [ 5, 2 ], "factionid": 1, "anfetamina": [ 3, 3 ], "crack": [ 1, 4 ], "heroina": [ 25, 5 ], "alcool": [ 0, 0 ] } ]

 

Eu uso a forma padrao e bem simples de alterar algum valor de determinada coluna, por exemplo:

local database = -- Conexão com o banco de dados
local playerID = -- ElementData
local New = 2

dbExec(database, "UPDATE inventario SET items = ? WHERE playerid = ?", New,  playerID)

Nessa função de exemplo eu seleciono a tabela inventario e procuro por items, altero a coluna de numero (playerID) e altero colocando nessa coluna (New)

Eu tentei fazer de algumas formas usando:

local inventario = fromJSON(items)
local inventario = toJSON({toJSON({items})})

-- Exemplo da forma que atualiza no banco de dados....

-- >>      [ [ "[ { \"1\": \"1\", \"2\": \"1\", \"maconha\": \"maconha\" } ]" ] ]
-- >>      [ [ "[ [ { \"maconha\": \"1\" }, { \"maconha\": \"1\" }, { \"maconha\": \"2\" } ] ]" ] ]

Mais todos atualiza bugado no banco de dados, estou quebrando a cabeça pra conseguir alterar somente uma variavel expecifica dentro da estrutura da coluna.

Por exemplo, alterando de:

"maconha": [ 1, 1 ]

para:

"maconha": [ 1, 2 ]

Quero aprender somente aprender alterar os valores dessas 'variaveis'

Alguem pode me ajudar, muito obrigado, espero ter seguido as regras da publicação.

 

 

Edited by legitimo
Link to comment
  • Other Languages Moderators

Olá! Seja bem-vindo(a) ao fórum.

Primeiramente, partindo do princípio de que banco de dados foi feito para salvar dados únicos, e não um objeto, como JSON. Da forma que você está tentando fazer, fica um pouco mais complicado. Pois, você iria precisar:

  1. Criar uma função, cuja recebe o objeto JSON do db;
  2. Converter para um formato que o MTA entenda, usando fromJSON;
  3. Inserir o resultado do fromJSON em uma tabela, com seus respectivos índice e valor.

Uma vez com a tabela contendo os índices e valores, você iria alterar o valor de alguma delas e converter novamente para JSON, usando toJSON. Daí você estaria pronto para salvar novamente os itens do jogador no banco de dados.

Exemplo:

local playerItems = [[
    [ { "maconha": [ 1, 1 ], "cocaina": [ 5, 2 ], "factionid": 1, "anfetamina": [ 3, 3 ], "crack": [ 1, 4 ], "heroina": [ 25, 5 ], "alcool": [ 0, 0 ] } ]
]] -- Pegando como exemplo o seu, da forma que retornaria do banco de dados

function convertJSONToTable(object) -- Função para converter JSON em uma tabela no qual poderemos modificar
    local JSON = fromJSON(object)
    local data = {}
    for index, value in pairs(JSON) do
        data[index] = value
    end
    return data
end

local myItems = convertJSONToTable(playerItems)

-- Modificando o valor
myItems["crack"][1] = 2 -- [edita_este_valor, 4]
myItems["crack"][2] = 6 -- [1, edita_este_valor]

local modifiedItems = toJSON(myItems)

-- Salve o "modifiedItems" no banco de dados

 

  • Thanks 1
Link to comment
5 hours ago, androksi said:

Olá! Seja bem-vindo(a) ao fórum.

Primeiramente, partindo do princípio de que banco de dados foi feito para salvar dados únicos, e não um objeto, como JSON. Da forma que você está tentando fazer, fica um pouco mais complicado. Pois, você iria precisar:

  1. Criar uma função, cuja recebe o objeto JSON do db;
  2. Converter para um formato que o MTA entenda, usando fromJSON;
  3. Inserir o resultado do fromJSON em uma tabela, com seus respectivos índice e valor.

Uma vez com a tabela contendo os índices e valores, você iria alterar o valor de alguma delas e converter novamente para JSON, usando toJSON. Daí você estaria pronto para salvar novamente os itens do jogador no banco de dados.

Exemplo:


 
]] -- Pegando como exemplo o seu, da forma que retornaria do banco de dados

function convertJSONToTable(object) -- Função para converter JSON em uma tabela no qual poderemos modificar
    local JSON = fromJSON(object)
    local data = {}
    for index, value in pairs(JSON) do
        data[index] = value
    end
    return data
end



-- Modificando o valor
myItems["crack"][1] = 2 -- [edita_este_valor, 4]
myItems["crack"][2] = 6 -- [1, edita_este_valor]

local modifiedItems = toJSON(myItems)

-- Salve o "modifiedItems" no banco de dados

 

Boa tarde meu amigo muito obrigado pela sua explicacao ampla e clara, juro que entendi oque voce me explicou, vou estudar e botar em pratica, primeiro vou estudar sobre fromJSON e toJSON e semelhar sua explicacao pra ter o entendimento de como entender a linguagem de programacao passada pela wiki ou demais livrarias, que um pouco confusa, praticando e semelhando consigo entender mais rapido.

Link to comment

Olá, boa noite amigo passei a tarde com a familia fui botar em pratica oque você me ensinou e consegui desenvolver oque eu estava querendo desenvolver.

Venho novamente agradecer, tambem venho agradecer pela função: 

function convertJSONToTable()

e pelo mini exemplo explicativo como eu deveria usar, funcionou tudo ok :D

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...