LeonardoS 0 Denunciar post Postado Abril 5, 2007 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
walace 1 Denunciar post Postado Abril 5, 2007 Dá um echo na tua variável $sql e posta o resultado junto com a estrutura da tabela. Compartilhar este post Link para o post Compartilhar em outros sites
LeonardoS 0 Denunciar post Postado Abril 10, 2007 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