Clipper On Line • Ver Tópico - Select parece certo mas dá erro

Select parece certo mas dá erro

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Select parece certo mas dá erro

Mensagempor ricardo-barros » 03 Mai 2017 00:37

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
<a href = editar.php?editar='3'>editar</a>

<?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):
<?
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:
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?
ricardo-barros
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 100
Data de registro: 29 Out 2009 20:12
Cidade/Estado: Fortaleza
Curtiu: 25 vezes
Mens.Curtidas: 1 vez

Select parece certo mas dá erro

Mensagempor Toledo » 03 Mai 2017 09:43

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

$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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 2841
Data de registro: 22 Jul 2003 19:39
Cidade/Estado: Araçatuba - SP
Curtiu: 202 vezes
Mens.Curtidas: 189 vezes

Select parece certo mas dá erro

Mensagempor ricardo-barros » 03 Mai 2017 13:36

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.
ricardo-barros
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 100
Data de registro: 29 Out 2009 20:12
Cidade/Estado: Fortaleza
Curtiu: 25 vezes
Mens.Curtidas: 1 vez

Select parece certo mas dá erro

Mensagempor Toledo » 03 Mai 2017 17:11

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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 2841
Data de registro: 22 Jul 2003 19:39
Cidade/Estado: Araçatuba - SP
Curtiu: 202 vezes
Mens.Curtidas: 189 vezes

Select parece certo mas dá erro

Mensagempor ricardo-barros » 04 Mai 2017 14:10

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:
$sql = "DELETE FROM cadastro WHERE id = '3' ";


Obrigado pela ajuda.
ricardo-barros
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 100
Data de registro: 29 Out 2009 20:12
Cidade/Estado: Fortaleza
Curtiu: 25 vezes
Mens.Curtidas: 1 vez




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro