Ir para conteúdo
  • 0

Verificar database


Victor8

Pergunta

Olá amigos do xtibia.

 

Odeio pedir coisas, eu sempre dou um jeito e faço eu mesmo. Mas database, não sei mesmo.

 

 

 

Seguinte, meu ot as vezes, perde a conexão com a data base (mysql).

 

Devido a querys muito grandes.

 

 

Solução:

 

Um script que tente pegar algum dado da data base e verificalo.

 

Se ele conseguir verificalo ok.

 

Se ele não conseguir.. fecha o ot.

 

 

Eu bolei uma mais ou menos aki. Mas não deu muito certo, olhem:

 

 

 

 

egua = 1

local Info = db.getResult("SELECT `id` FROM `players` WHERE `id` = " .. egua .. ";")

if info == 1 then

 

 

else

doShutdown()

end

 

 

return

end

Editado por Victor8
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Adiciona em alguma lib:

 

function getInfoFromDatabase(table, column, condition, id)
local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."`= "..id..";")
local b = a:getDataString(""..column.."")
return b
end

 

Usando a função:

 

getInfoFromDatabase(players, resets, name, Batata)

 

Ela faz isso:

 

db.getResult("SELECT `resets` FROM `players` WHERE `name` = "Batata";")

Ai é só usar assim:

 

if getInfoFromDatabase(players, id, id, 1) == 1 then
blablabla
else
doShutdown()
end

 

Acho que vai funcionar. Se não, vê se dá algum erro e posta aqui.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Try again:

 

function getInfoFromDatabase(table, column, condition, id)
local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = "..id..";")
local b = a:getDataString(""..column.."")
return b
end

 

Se não funcionar, me mostra como você tá usando a função.

Link para o comentário
Compartilhar em outros sites

  • 0

Deu denovo o mesmo erro.

 

To usando assim, para testar, é claro.

 

 

function onThink(interval, lastExecution)
if getInfoFromDatabase(players, id, id, 1) == 1 then
   doBroadcastMessage("k")
else
doShutdown()
end
   return true
end

 

 

E adicionei na lib functions.

Link para o comentário
Compartilhar em outros sites

  • 0

function getInfoFromDatabase(table, column, condition, id)
local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = `"..id.."`;")
local b = a:getDataString(""..column.."")
return b, a:free()
end

 

Rapaz, você tá perguntando o seguinte pro sistema: Retornar o ID do player que tiver ID igual a 1.

 

Não faz sentido isso, se o player tiver ID 1, vai retornar 1. Vê se você não tá usando a condição errada.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Vei, agora que fui ver.

 

Na data base nao tem player com id 1.

 

Eu coloquei assim agora:

 

 

 

function onThink(interval, lastExecution)

 

if getInfoFromDatabase(players, id, id, 3) == 3 then

doBroadcastMessage("k")

else

doShutdown()

end

return true

end

 

 

Mas mesmo assim deu a condition errada. Nill value :\

 

 

 

2wlvz3m.jpg

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não sei se sou eu que tô fazendo alguma bobeira, até porque eu sou meio ruim pra mexer com querys, mas ainda tá me incomodando essa verificação.

 

Olha só como tá, do jeito que você fez:

 

SELECT `id` FROM `players` WHERE `id` = `3`;

 

Selecionar o id de quem tiver id igual a 3? Estranho, não?

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Pois é cara, sabe aquele primeiro script que eu fiz. Tava dando praticamente o mesmo erro.

 

Cara, só se mudar, tipo..

 

Ver a account id, ou o nome seila

 

Quem sabe esse ID seja da propria data base, e nao um valor. o_o

:\

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, tenta de novo:

 

function getInfoFromDatabase(table, column, condition, id)
local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = `"..id.."`;")
if a:getID() == -1 then return false end
local b = a:getDataString(""..column.."")
return b, a:free()
end

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Com a ajuda do Slicer eu acho que arrumamos uma solução:

 

getInfoFromDatabase("players", "id", "name", "Sorcerer Sample")

 

Tenta ai.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

OOOOOOOOOOPA FECHOU O OT.

 

Não era pra fechar, perai vou ver.

 

Mas ja é uma grande coisa cara, nossa.

 

Perai ja edito aki.

 

 

Alterei o script para testar:

 

 

function onThink(interval, lastExecution)

 

if getInfoFromDatabase("players", "id", "name", "Sorcerer Sample") == 3 then

doBroadcastMessage("ok")

else

doBroadcastMessage("fechar")

end

return true

end

 

 

 

 

Deu esse erro.

 

 

 

1fwbgo.jpg

Editado por Victor8
Link para o comentário
Compartilhar em outros sites

  • 0

function getInfoFromDatabase(table, column, condition, id)
local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = "..id..";")
if a:getID() == -1 then return false end
local b = a:getDataString(""..column.."")
return b, a:free()
end

 

Vê ai.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...