Jump to content

Ajuda Insert Mysql


Recommended Posts

Posted (edited)

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
  • Other Languages Moderators
Posted

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
Posted
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.

Posted

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

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...