FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.317 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 31-05-2005, 11:47   #1 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 31 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão update no mysql via PHP pirou de vez, alguém tem uma dica?

Vejam o exemplo:

Código:
$query = "UPDATE diskusage SET espaco='$Espaco',servidor='$ServidorLocal',logs='$LogFinal',dados='$TamanhoDados',maior='$Espaco' WHERE ID='$SQLID'"; echo $query, "\n"; mysql_query($query);
O resultado do echo $query é o seguinte:

Código:
UPDATE diskusage SET espaco='393006667',servidor='columbia.netpoint.com.br',log s='8217883',dados='2719744',maior='393006667' WHERE ID='360'
Então eu logo no banco de dados e rodo o seguinte:

select * from diskusage where ID=360

e o resultado é o seguinte:

Código:
+-----+---------------+------------+--------------------------+-----------+----------+-----------+ | ID | dominio | espaco | servidor | logs | dados | maior | +-----+---------------+------------+--------------------------+-----------+----------+-----------+ | 360 | teste.com.br | 2510708240 | servidor.teste.com.br | 280676837 | 40831649 | 393006667 | +-----+---------------+------------+--------------------------+-----------+----------+-----------+
Reparem os números que foram colocados na query e os números apresentados no select do banco, o único que bate é o ultimo.

O mais estranho é que se eu crio um script simples com apenas a query ele funciona numa boa, mas quando a query está no meio do meu script principal acontece essa maluquice.

Tanto PHP(PHP 4.3.3) quanto MySQL(4.1.9-nt) estão no windows.

Alguém tem alguma idéia do que pode estar gerando este resultado maluco?

Flw, valeu!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 31-05-2005, 14:27   #2 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Eu verificaria se não há alguma variável (ou melhor, todas... :mrgreen: ) obtendo valores de algum lugar depois de fazer a query...

Você falou de um "script simples". O que mais tem no teu script?

Hmmm... Tem certeza que está atualizando teu BD??? Idéias, idéias, idééééias... :P
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 31-05-2005, 16:52   #3 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 31 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

Este insert é a ultima coisa que o script faz, então depois do insert eu coloco o erro e recebo exatamente os valores esperados, mas quando vou ver no BD os valores estão completamente errados.

Não estou entendendo como ele pode me mostrar uma coisa no echo e colocar outra completamente diferente no insert, to ficando maluco já com essa coisa! arghhh

Não acredito que as variáveis estejam sendo modificadas pois o valor do echo é correto.

O pior é que o valor do ultimo campo é inserido corretamente, mas apenas ele, os outros estão doidos.

Já até apaguei o BD e recriei para ver se o problema não era nele, infelizmente não resolveu.

Qualquer idéia é bem vinda.

Falow!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 31-05-2005, 17:25   #4 (permalink)
profeta_livre
Super Participante
 
Registrado em: Jan 2005
Mensagens: 958
Reputação: 16 profeta_livre está indo no caminho certo
Padrão

Código:
$query = "UPDATE diskusage SET espaco='$Espaco',servidor='$ServidorLocal',logs='$LogFinal',dados='$TamanhoDados',maior='$Espaco' WHERE ID='$SQLID'"; echo $query, "\n";
a respostas que vc fala que dá e que é diferente da que esta'inserida vem desse
Código:
echo $query, "\n";
não sei se entendi! ops:
profeta_livre está offline   Responder com Quote
Antigo 31-05-2005, 18:21   #5 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Quais foram os tipos dos campos que tu colocou no banco? Será que não está se perdendo nos valores? Exemplo: se colocou INT e deve ser LONG INT. Não sei o valor máximo, mas dá uma verificada.
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 31-05-2005, 19:01   #6 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 31 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

profeta_livre, é exatamente isso que difere, a query é passada para o banco pelo mysql_query e na hora que vou ler está completamente diferente do que o mostrado pelo echo.

rwar, cheguei a imaginar que o problema seria nos campos do banco de dados, então chutei o pau da barraca e coloquei bigint em todos os campos numérios e o problema persiste. :-(

Será que isso pode ser algum bug específico da versão do PHP?

Tenho outro problema que também gera um monte de problemas neste servidor, o comando getcwd() retorna corretamente uma vez ou outra, porém, normalmente ele retorna um valor completamente diferente do esperado, muitas vezes o que ele retorna é c:\winnt\system32\alguma coisa que não lembro\. Este ultimo problema eu não tenho a menor idéia do que pode ser e muito menos de como resolver, já tirei o PHP e instalei novamente sem sucesso.
O problema é que quando algum cliente vai tentar usar a função fopen ou criar um arquivo qualquer usando algum comando acaba dando permissão negada já que o caminho não faz parte do path do site dele.

Flw, valeu!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 03-06-2005, 10:27   #7 (permalink)
oitavo_anjo
Super Participante
 
Avatar de oitavo_anjo
 
Registrado em: Aug 2004
Localização: teresina
Idade: 2
Mensagens: 630
Reputação: 19 oitavo_anjo é um modelo a seguiroitavo_anjo é um modelo a seguiroitavo_anjo é um modelo a seguir
Enviar mensagem via MSN para oitavo_anjo
Padrão

.. qto a query, ta usando alguma funçao de escape de string pro banco, como mysql_escape_string(), ou entao tenta usar assim
$query = "UPDATE diskusage SET espaco='".$espaco."', servidor='".$servidor."' ...";
tive um problema parecido uma vez(n sei o motivo) e resolveu assim..
__________________
Desktop (Frankenstein )
Core2Duo E6300 - 1,83Ghz, @1Gb, 80Gb, GeForce 8400GS - WindowsXP SP3 - Ubuntu 8.10
NoteBook (Dell ) Core2Duo T6500 - 2,1Ghz, @3Gb, 320Gb - Debian 5 - FreeBSD 7.2
oitavo_anjo está offline   Responder com Quote
Antigo 03-06-2005, 19:21   #8 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 31 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

oitavo_anjo, poderia me dizer que diferença o ponto faz na hora da query?

Flw, valeu!
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Antigo 04-06-2005, 0:55   #9 (permalink)
MaSCaRaDe
Super Participante
 
Avatar de MaSCaRaDe
 
Registrado em: Feb 2003
Localização: Rio de Janeiro/RJ
Idade: 9
Mensagens: 950
Reputação: 284 MaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputaçãoMaSCaRaDe tem uma fabulosa reputação
Enviar mensagem via ICQ para MaSCaRaDe Enviar mensagem via MSN para MaSCaRaDe Enviar mensagem via Skype para MaSCaRaDe
Padrão

Veja se assim funciona:

Código:
$query = "UPDATE diskusage SET espaco='$Espaco',servidor='$ServidorLocal',logs='$LogFinal',dados='$TamanhoDados',maior='$Espaco' WHERE ID=$SQLID ";

[]s DB! :twisted:
__________________
"Read the directions and directly you will be directed in the right direction."

http://www.dmbtecnologia.com.br
MaSCaRaDe está offline   Responder com Quote
Antigo 05-06-2005, 14:04   #10 (permalink)
FMC
Zumbi
 
Registrado em: Apr 2002
Localização: São Paulo Capital
Mensagens: 8.321
Reputação: 31 FMC está indo no caminho certo
Enviar mensagem via ICQ para FMC
Padrão

Gente, desculpem pelo post, mas a loucura não é do BD nem do PHP, a doidera é do programador mesmo! :-D

O script roda em loop e em uma ocasião específica a variavel $SQLID não estava sendo renovada, isso fazia com que o valor anterior inserido no DB fosse sobrescrito com o valor do loop atual! :-(

Tremenda porcaria, me matei um tempão pra descobrir isso, mas valeu pelas ajudas, serão úteis uma hora ou outra! :-D
__________________
FMC = Fábio Magalhães Catunda
FMC está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 8:47.