Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LeonardoS

Erro muito estranho no MySQL usando php

Recommended Posts

Estou tendo problemas. Me aparece escrito isto quando tenta inserir no Mysql:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id=1' at line 21 "

 

O código que escrevi é este: com alguns detalhes que direi adiante:

 


$tipo=$_GET['tipo'];

$troca = array(',' => '.', '.' => ',');

 

$nome = strtoupper($_POST['nome']);

$fornecedor = strtoupper($_POST['fornecedor']);

$med = strtoupper($_POST['med']);

$codigo = strtoupper($_POST['codigo']);

$preco_real = (!$_POST['preco_real'])?0 linenums:0'>$id=$_GET['id'];$tipo=$_GET['tipo'];$troca = array(',' => '.', '.' => ','); $nome = strtoupper($_POST['nome']); $fornecedor = strtoupper($_POST['fornecedor']); $med = strtoupper($_POST['med']); $codigo = strtoupper($_POST['codigo']); $preco_real = (!$_POST['preco_real'])?0:$_POST['preco_real']; $preco_dolar = (!$_POST['preco_dolar'])?0:$_POST['preco_dolar']; $custo_compra = (!$_POST['custo_compra'])?0:$_POST['custo_compra']; $custo_medio = (!$_POST['custo_medio'])?0:$_POST['custo_medio']; $estoque_atual = (!$_POST['estoque_atual'])?0:$_POST['estoque_atual']; $estoque_minimo = (!$_POST['estoque_minimo'])?0:$_POST['estoque_minimo']; $ultima_compra = (!$_POST['ultima_compra'])?date('YmdHis'):$_POST['ultima_compra']; $ultima_venda = (!$_POST['ultima_venda'])?date('YmdHis'):$_POST['ultima_venda']; $comissao = (!$_POST['comissao'])?0:$_POST['comissao']; $peso = (!$_POST['peso'])?0:$_POST['peso']; $ipi = (!$_POST['ipi'])?0:$_POST['ipi']; $lucro_bruto = (!$_POST['lucro_bruto'])?0:$_POST['lucro_bruto']; $grupo = strtoupper($_POST['grupo_est']); $obs = strtoupper($_POST['obs']); $erro = 0;// segunda sequencia de codigos: $preco_real = strtr($preco_real, $troca); $preco_dolar = strtr($preco_dolar, $troca); $custo_compra = strtr($custo_compra, $troca); $custo_medio = strtr($custo_medio, $troca); $estoque_atual = strtr($estoque_atual, $troca); $estoque_minimo = strtr($estoque_minimo, $troca); $comissao = strtr($comissao, $troca); $peso = strtr($peso, $troca); $ipi = strtr($ipi, $troca); $lucro_bruto = strtr($lucro_bruto, $troca); $ultima_compra = date('YmdHis', strtotime($ultima_compra)); $ultima_venda = date('YmdHis', strtotime($ultima_venda));

Ele usa o $_POST pra pegar os dados preenhidos no formulário.

Na segunda sequencia de códigos o objetivo é transformar os valores que estão, por exemplo: 78,00 para 78.00 formatando da maneira correta para entrar no Mysql como DECIMAL, que já foi configurado no DB

 

Neste caso, $_GET['tipo'] lá de cima = ESTOQUE

 

Depois ele faz algumas verificações de segurança, que se houver erros a $erro passa a ser 1 e ele não insere no BD, pede pra voltar e corrigir.

 

E por fim, depois de uma série de ECHO, mostrando os dados retirados pelo $_POST ele deveria mostrar o que foi preenchido e inserir no MySql, mas dá o erro mencionado lá no inicio.

 

Este é o código de inserção no MySql que construi:


fornecedor='$fornecedor',

med='$med',

codigo='$codigo',

preco_real='$preco_real',

preco_dolar='$preco_dolar',

custo_compra='$custo_compra',

custo_medio='$custo_medio',

estoque_atual='$estoque_atual',

estoque_minimo='$estoque_minimo',

ultima_compra='$ultima_compra',

ultima_venda='$ultima_venda',

comissao='$comissao',

peso='$peso',

ipi='$ipi',

lucro_bruto='$lucro_bruto',

grupo_est='$grupo_est',

obs='$obs',

WHERE

id=$id";

 

mysql_query ($sql) or die (mysql_error());

if(mysql_affected_rows()==1){

$fim='REGISTRO ATUALIZADO COM SUCESSO!';

$botao='<input type="button" value="Fechar" onclick="window.close()" style="color linenums:0'>if ($erro==0){ //ENVIA OS DADOS PARA O BD! $sql = "UPDATE $tipo SET nome='$nome', fornecedor='$fornecedor', med='$med', codigo='$codigo', preco_real='$preco_real', preco_dolar='$preco_dolar', custo_compra='$custo_compra', custo_medio='$custo_medio', estoque_atual='$estoque_atual', estoque_minimo='$estoque_minimo', ultima_compra='$ultima_compra', ultima_venda='$ultima_venda', comissao='$comissao', peso='$peso', ipi='$ipi', lucro_bruto='$lucro_bruto', grupo_est='$grupo_est', obs='$obs', WHERE id=$id"; mysql_query ($sql) or die (mysql_error()); if(mysql_affected_rows()==1){ $fim='REGISTRO ATUALIZADO COM SUCESSO!'; $botao='<input type="button" value="Fechar" onclick="window.close()" style="color: #FFFFFF; background-color: #0099FF"/>'; } else{ $fim='ERRO NO BANCO DE DADOS'; $botao='<input type="button" value="Corrigir" onclick="history.go(-1)" style="color: #ffffff; background-color: #FF6F6F"/>'; }} else{ $fim='ERRO DE DADOS NO FORMULÁRIO'; $botao='<input type="button" value="Corrigir" onclick="history.go(-1)" style="color: #ffffff; background-color: #FF6F6F"/>'; }

Eu desconfiava que o erro vinha na hora de inserir no Mysql a variavel $ultima_compra e $ultima_venda, por ter que converter certinho a data para TIMESTAMP, mas já vi que não são elas. Seria alguma coisa ligada à DECIMAL?

Mas se já está em 78.00 (com ponto - conforme configuração americana) deveria ser inserido sem problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

segui seu conselho e dei um ECHO no $sql

O problema que estava tendo é que nas linhas de inserção das variáveis no MYSQL, antes de dar um WHERE eu estava colocando uma "virgula", onde enão precisava (após o $obs).

 

obs='$obs',WHEREid=$id";

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.