Ir para conteúdo

Arquivado

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

mauriciorrp

Erro na cláusula where

Recommended Posts

Amigos, em uma consulta com a cláusula WHERE estou me deparando com o erro de que a coluna não existe.

 

Vou passar detalhadamente a tabela, o select e a mensagem de erro.

 

Primeiro a tabela:

 

treino_nome_id

usuario_id

treino_nome_descricao

treino_repeticoes

treino_nome_status

 

 

Agora o Select

$usuario_id = $_SESSION['usuario_id'];

$ultimo_registro = mysql_query('SELECT treino_nome_id FROM treino_nome WHERE usuario_id = $usuario_id
                   ORDER BY treino_nome_id DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

Agora o erro

 

Invalid query: Unknown column '$usuario_id' in 'where clause'

 

Se alguém puder me ajudar serei muito grato.

 

Obrigado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A variavel só será interpretada se estiver dentro de "aspas dupla"

$ultimo_registro = mysql_query("SELECT treino_nome_id FROM treino_nome WHERE usuario_id = $usuario_id
                   ORDER BY treino_nome_id DESC LIMIT 1") or die('Invalid query: ' . mysql_error());

Com aspas simples é interpretada como uma coluna.

 

E outro detalhe, já desenvolva em mysqli

http://php.net/manual/pt_BR/mysqli.query.php


Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo, pelo retorno, funcionou, o erro era a falta de aspas mesmo.

 

Entretanto a consulta está vindo em branco após ter colocado a condição Where na query.

 

Ou seja: Sem a função where o select funciona e traz resultado mas com a condição Where não funciona.

 

Saberia informar o porque não traz resultado ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não trás resultado porque não há nada para ser exibido.

 

Dê um echo no $usuario_id e veja qual o valor ele contêm, depois olhe no BD para ver se acha algo com o mesmo valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, obrigado pela ajuda.

 

Acabei de dar um echo em $usuario_id e ele apresentou o número 4.

 

Fui na tabela pelo phpadmin e segue abaixo o que tem guardado na tabela:

 

zjjll4.jpg

 

Depois fui no php admin e fiz uma consulta manual usando a mesma lógica e deu certo.

 

t9tqoi.jpg

 

Desta forma, funciona no phpadmin mas não funciona no php ?

 

To quebrando a cabeça aqui, será que consegui me ajudar amigo?

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro ponto para te ajudar é ter o script completo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro amigo, abaixo código completo:

 

<?php
session_start();
include "config.php";
include "/home/wwwfisic/public_html/sistema/restrito2/functions.php";
session_checker();
echo "<div style='text-align:right'>Você logou como <strong>". $_SESSION['nome'] ." ". $_SESSION['sobrenome'] ."</div></strong> <br />";
echo "<div style='text-align:right'><a href=\"logout.php\">Sair</div></a>";
echo "<hr />";
include "menu.html";
$usuario_id = $_SESSION['usuario_id'];
$treino_nome = $_POST["treino_nome"];
$treino = "INSERT INTO treino_nome(usuario_id,treino_nome_descricao) VALUES ('$usuario_id','$treino_nome')";
mysql_query ($treino) or die ("Error in query: $query. ".mysql_error());
echo "$usuario_id";
$ultimo_registro = mysql_query('SELECT treino_nome_id FROM treino_nome WHERE usuario_id = "$usuario_id"
ORDER BY treino_nome_id DESC LIMIT 1') or die('Invalid query: ' . mysql_error());
$resultado = mysql_fetch_assoc($ultimo_registro);
echo $resultado['treino_nome_id'];
foreach($_POST['treino_exercicio'] as $ind=>$val){
echo '<br />'.$_POST['treino_exercicio'][$ind].'<br />'.$_POST['treino_repeticoes'][$ind].'<br />'.$_POST['treino_carga'][$ind];
}
foreach($_POST['treino_exercicio'] as $ind=>$val){
$insere = "INSERT INTO treino(usuario_id,treino_exercicio,treino_repeticoes,treino_carga) VALUES ('$usuario_id','".$_POST['treino_exercicio'][$ind]."', '".$_POST['treino_repeticoes'][$ind]."','".$_POST['treino_carga'][$ind]."')";
mysql_query ($insere) or die ("Error in query: $query. ".mysql_error());
}
mysql_close();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, acho que descobri, mudei isto:

 

$ultimo_registro = mysql_query('SELECT treino_nome_id FROM treino_nome WHERE usuario_id = "$usuario_id"
ORDER BY treino_nome_id DESC LIMIT 1') or die('Invalid query: ' . mysql_error());
para isto
$ultimo_registro = mysql_query('SELECT treino_nome_id FROM treino_nome WHERE usuario_id = "4"
ORDER BY treino_nome_id DESC LIMIT 1') or die('Invalid query: ' . mysql_error());

 

 

e o retorno veio corretamente.

 

Ou seja, algo esta acontecendo que não está identificando a variável como 4 ( mesmo o echo apresentar 4).

 

O que poderia ser meu grande amigo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites


$ultimo_registro = mysql_query("SELECT treino_nome_id FROM treino_nome WHERE usuario_id = '$usuario_id'
ORDER BY treino_nome_id DESC LIMIT 1") or die('Invalid query: ' . mysql_error());

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.