Select parece certo mas dá erro

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Select parece certo mas dá erro

Mensagem por ricardo-barros »

Olá colegas.
Após décadas programando em xBASE (desde o dBASE II até o Harbour) resolvi aprender PHP.
No momento estou fazendo um CRUD e me deparei com um erro de sintaxe.
Quando eu clico num link chamado editar que me leva ao script editar.php conforme se pode ver abaixo

Código: Selecionar todos

<a href = editar.php?editar='3'>editar</a>

Código: Selecionar todos

<?php
   $host = "localhost";
   $login = "root";
   $senha = "";
   $banco = "alunos";

   $con = mysqli_connect($host, $login, $senha, $banco);
   mysqli_select_db($con, $banco); 

   $var = mysqli_close($con);
?>
uma variável chamada editar vai contendo o id do registro a ser editado (3):

Código: Selecionar todos

<?
include_once 'conexao.php';
$sql = "SELECT * FROM cadastro WHERE id='".$_GET['editar']."'";
echo $sql;
$result = mysqli_query($con, $sql);
if($result === false) 
  echo mysqli_error($con); 
else
  $linha = mysqli_fetch_array($result);
?>

<p>Editar</p>
<form action = "evento.php?editar=<? echo linha['id']; ?>" method = "post">
   <input type = "text" name = "nome" value = "<? echo $linha['nome']; ?>"><br>
   <input type = "text" name = "telefone" value = "<? echo $linha['telefone']; ?>"><br>
   <input type = "submit" value="Editar">
</form>
<a href = "index.php">Voltar</a>
Vejam que eu chego a exibr o conteúdo da variável $sql ou seja:

Código: Selecionar todos

SELECT * FROM cadastro WHERE id="3"
Parece certo não é? Mas na hora de executar o mysqli_query dá o seguinte erro:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB

Alguém pode ajudar a resolver este mistério?
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Select parece certo mas dá erro

Mensagem por Toledo »

Amigo, no final do seu arquivo conexao.php você esta usando o comando:

Código: Selecionar todos

$var = mysqli_close($con);
Você está fechando a conexão. Então acho que o problema está ai, pois com a conexão encerrada não tem como usar o SELECT.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Select parece certo mas dá erro

Mensagem por ricardo-barros »

Comentei a linha que fecha a conexão mas o erro continua o mesmo.
Na verdade eu já tinha testado isso antes de postar o tópico pois o erro que aparece é de sintaxe e é isso que não faz sentido.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Select parece certo mas dá erro

Mensagem por Toledo »

Então, no seu SELECT esta usando WHERE id="3", será que id é mesmo uma string (caracter)?

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
ricardo-barros
Usuário Nível 3
Usuário Nível 3
Mensagens: 104
Registrado em: 29 Out 2009 20:12
Localização: Fortaleza

Select parece certo mas dá erro

Mensagem por ricardo-barros »

Toledo, você descobriu o problema: eu estava passando o id entre apóstrofos.

Só não entendo por que eles não dão problema nesta outra query:

Código: Selecionar todos

$sql = "DELETE FROM cadastro WHERE id = '3' ";
Obrigado pela ajuda.
Responder