Ir para conteúdo
Fórum Script Brasil
  • 0

Error: Unknown Column '' In 'where Clause'


dev

Pergunta

Oi, gente.

O código que estou usando é esse:

$query ="SELECT * FROM dados WHERE login=$log";

$resultado = mysql_query($query,$conexao) or die('error: ' . mysql_error());

$retorno = mysql_num_rows($resultado);

A variavel $log é o login do usuário, é puxado da session quando o cara loga.

$log =  $_POST[txtlogin];

session_register("log");

$senha    =  $_POST[txtsenha];

Tá reconhecendo o login, mas diz que a coluna não existe. O que pode ser?

Fica tipo assim:

Error: Unknown column 'marcio' in 'where clause'

Tentei colocar a variave assim: login= '$log', mas aí deu aquele erro de que tem "" a mais na key 2 (algo assim), tirei as aspas simples e agora está dando esse erro da coluna. Naõ estou conseguindo resolver.

Se alguém puder me ajudar, agradeço demais. biggrin.gif

Inté...

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Oi, Illidan. beleza, cara? Tudo bem, gente?

Fiquei sem conexão, o provedor do speedy me deixou na mão, mas agora já tudo funcionando de novo...

Eu montei um esqueminha, tipo como você me passou, com algumas alterações... deu alguns erros que consegui corrigir, mas agora estou com problemas para imprimir 04 campos numa mesma linha, fiz alguns teste que não funcionaram, também verifiquei o manual, mas não quer aparecer o resultado na página...

Fiz o código assim:

<?if(mysql_num_rows($result) > 0) {?>

<?while($array = mysql_fetch_array($result)) {?>

<td>Estado Civil</td><td>

<?echo $array['ecivil'];?></td>

O problema:

<? $id1=$array['idiomas1];

$id2=$array['idiomas2'];

$id3=$array['idiomas3'];

$id4=$array['idiomas4'];

echo("$id1<br>$id2<br>$id3<br>$id4<br>");?>&nbsp;</td>

Tentei várias formas:

<?echo $array["idiomas1]["idiomas2"]["idiomas3"]["idiomas4"];?>&nbsp;</td>

Também colocando o "." ou "&&" ou "AND"....

Agora imagino que sejam testes idiotas, mas como ainda não entendo o código muito bem, faço vários testes a partir do que entendo que seja lógico, se funciona, beleza, estou no caminho certo e se não funciona, continuo tentando até descobrir o certo e "por quê".

Desculpe por dar trabalho. garanto que tentei evitar, but.... rolleyes.gif

Um grande abraço,

dev wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fala rapaz, tudo bem?

Fico feliz que você esteja tentando solucionar os erros através de experimentação. Isso desenvolve seu raciocínio e você aprende muito melhor e mais rápido como o sistema funciona logicamente. É mais sofrido, mas vale a pena mesmo! wink.gif

Bom, mas vamos ao código. No seu banco de dados, existe um campo idiomas1, idiomas2, idiomas3 e idiomas4. Certo? Um campo para cada idioma?

Então, o primeiro problema: vamos supor que eu só fale português. Os outros 3 campos estarão nulos no banco de dados, certo? Então ele vai dar uma mensagem de erro sempre que você tentar imprimir o valor dos outros campos. Para isso, usaremos um "@" pra suprimir as mensagens de erro.

Segundo problema: a sintaxe pra chamar esses valores é assim:

<td>

<?php

echo @$array["idiomas1"];

if (@$array['idiomas2']) { echo ", " . @$array['$idiomas2']; }

if (@$array['idiomas3']) { echo ", " . @$array['$idiomas3']; }

if (@$array['idiomas4']) { echo ", " . @$array['$idiomas4']; }

?>&nbsp;

</td>

Entendeu o por que desses ifs? É que, se eu falasse só português, ele não iria imprimir as outras variáveis nem dar mensagens de erro por elas não existirem, mas ele iria imprimir a vírgula! O resultado sairia assim:

Idiomas: Portugês, , ,

Entende? Com esses ifs, ele só vai imprimir a próxima vírgula se a próxima variável de idioma estiver definida.

Falou, então! Qualquer coisa, posta aí!

Até mais! Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, Illidan!!! biggrin.gif

Poxa, cara, com suas explicações fica bem mais fácil "entender" como funciona.

Agradeço pelo incentivo e pela verdadeira aula.

Vou continuar dando caminho nas coisas, mas estou ficando contente demais com os avanços.

Claro, sem o fórum e sem sua ajuda, seria imensamente mais difícil.

Um grande abraço e obrigado mesmo.

laugh.gif

dev.

Link para o comentário
Compartilhar em outros sites

  • 0

Gladisson,

Acredito que esse problema foi solucionado. Agora ele tá querendo imprimir uma linha com os idiomas que cada usuário fala.

Mas pra isso precisamos saber se os idiomas estão armazenados em campos distintos ou não... eu passei um exemplo, vamos ver o que ele fala.

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Aí, Gladisson.

Agradeço por sua ajuda, também.

Putz, gente estou super animado, com a ajuda de vocês estou conseguindo montar bem mais do que planejava e, principalmente, "aprender" mais...

Valeu gente, muito obrigado, hein.

biggrin.gifbiggrin.gifbiggrin.gif

ps.: muito provavelmente, terei novas perguntas, espero poder continuar contando com a ajuda que vocês todos têm me dado. Esse fórum (e vocês, lógico) é demais!!!

Abração.

wink.gif dev.

Link para o comentário
Compartilhar em outros sites

  • 0
Gladisson,

Acredito que esse problema foi solucionado. Agora ele tá querendo imprimir uma linha com os idiomas que cada usuário fala.

Mas pra isso precisamos saber se os idiomas estão armazenados em campos distintos ou não... eu passei um exemplo, vamos ver o que ele fala.

Até mais!

Hum então tá. cool.gif

Vamos ver a resposta dele.

Link para o comentário
Compartilhar em outros sites

  • 0

Dev,

Como está seu banco de dados? Gostaria de saber o nome de cada campo... eu tinha feito uma coisa errada naquele código, dependendo da hora que você copiou, ia dar erro mesmo. Desculpe, foi falta de atenção minha... agora já consertei naquele mesmo post... quiser tentar de novo wink.gif

Se ainda não der certo, me fala sobre os campos do mysql... beleza?

Falou! Um abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

illidan, continua dando o mesmo erro, acho que tinho pego depois que você corrigiu. Mas tranqüilo... só de me ajudar tá bom demais... wink.gif

O que quer saber sobre o BD?

tem os campos:

id, inclusao, login, senha, nome, nascimento, endereco, bairro, cidade, estado, pais, cep, ecivil, idiomas1 2 3 e 4, ramo 1 2 3 e 4, foto1, foto2. Por enquanto, são esses, tem campos demais e deixei pra completar depois que estiver tudo funcionando.

rolleyes.gif

dev

Link para o comentário
Compartilhar em outros sites

  • 0

Eu queria saber se os campos idiomas1, 2, 3 e 4 são campos diferentes, mesmo. Bom, se são, era pra funcionar sad.gif

Acabei de rever aquele código e alterei uma coisa... (mais uma desatenção da minha parte, me desculpe novamente! Preciso ficar mais atento!). Eu fui copiando e colando umas partes dos outros posts, aí deixei escapar um sinal de "$" que tava sobrando... Acho que agora vai funcionar!

<td>

<?php

echo @$array["idiomas1"];

if (@$array['idiomas2']) { echo ", " . @$array['idiomas2']; }

if (@$array['idiomas3']) { echo ", " . @$array['idiomas3']; }

if (@$array['idiomas4']) { echo ", " . @$array['idiomas4']; }

?>&nbsp;

</td>

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

E, cara, voltei...

Com a sua ajuda, consegui imprimir os dados na página e tmabém criar o arquivo de busca.

O que tá acontecendo é o seguinte:

1:

$sql = "select * from dados where faixaidade LIKE '$%palavra%' or ecivil LIKE '$%palavra%'";

se coloco o "%" aparece o resultado com os dados, mesmo que não tenha a palavra que procurei, e se tiro os "%", não aparece nada mesmo que tenha.

2: Preciso colocar um link no login que aparece no resultado da busca, eu to imprimindo o resultado com o código assim:

<?while($array_usuario = mysql_fetch_array($result)) {?>

  <tr bgcolor="ebebeb">

    <td width="106" height="25" bgcolor="#E9E9E9">

<font face="Arial Narrow" size="2">

      <p style="margin-left: 3px">

      <?echo  $array_usuario['login'];?>

      </font></td>

Já abri outro tópico sobre o assunto, mas se puder me ajudar... também se estiver ocupado, não esquenta... de qualquer forma... valeu !!

Abração.

dev

biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Dev! Fico feliz que você esteja conseguindo fazer várias coisas no PHP!

Bom, seu primeiro problema:

A sintaxe correta para o mysql_query() é assim:

$sql = "select * from dados where faixaidade LIKE '%$palavra%' or ecivil LIKE '%$palavra%'";

Mas eu vi que o Cliford corrigiu esse erro e você disse que não funcionou... então, como está a variável $palavra? Experimenta dar um <? echo $palavra; ?> nesse mesmo script de busca, só pra ver como ela está definida... entende? Manda ele imprimir o valor dela no canto da página mesmo, depois você apaga esse comando... assim a gente vê o valor que está indo na variável...

O fato de você colocar o "%" serve para o seguinte:

Imagine um exemplo, onde o campo "nome" tem o valor "Ayrton Senna":

$palavra = "Ayrton";

se você colocar WHERE nome LIKE '%$palavra%' , ele achará esse campo.

se você colocar WHERE nome LIKE '$palavra%' , ele tb achará esse campo.

se você colocar WHERE nome LIKE '%$palavra' , ele não achará nada.

Entende o porque? Imagine que esse sinal de "%" indica pra onde o texto pode continuar no campo. Se você não colocar ele em uma das extremidades, você está dizendo que o texto deve terminar ali.

Por exemplo, onde eu disse que não retorna nada: '%Ayrton' -> tá dizendo pra buscar o campo: (alguma coisa) + Ayrton (e fim, acaba no Ayrton. O que não é verdade, pois tem o 'Senna' depois. Então retorna nulo).

Pode ser que nem seja esse o problema, mas assim você já aprende mais uma coisa nova smile.gif

Tenta ver se o valor da variável $palavra está certo, então...

============================================

Quanto ao outro problema... esse link no login estaria apontando para onde? Uma página com informações detalhadas de cada um? Então, faz assim:

<?while($array_usuario = mysql_fetch_array($result)) {?>

  <tr bgcolor="ebebeb">

    <td width="106" height="25" bgcolor="#E9E9E9">

<font face="Arial Narrow" size="2">

      <p style="margin-left: 3px">

<? echo "<a href=\"info.php?login=" . $array_usuario['login'] . "\">" . $array_usuario['login'] . "</a>"; ?>

      </font></td>

Entende? você vai criar uma Query String pra página "login.php". Aí, nessa outra página, você vai fazer assim:

$login = $_GET['login'];

...

...

$query = "SELECT * FROM dados WHERE login = '$login'";

Entendeu? Aí você exibe só os dados desse usuário na tela.

Nossa, escrevi muito! Mas, valeu... até mais! Um abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

E aí, Illidan? biggrin.gif

Mais uma vez, MUITO obrigado por sua ajuda !!

Bom...

1- busca: Quanto ao teste com a "$palavra", deu certo, aparece a palavra que digitei, mas a busca continua dando erro... se é que é erro... talvez eu é que não esteja usando a "ferramenta" certa, sei lá...

Usando o "%", se coloco hgdy na busca, aparece o usuário cadastrado e se coloco uma palavra válida, que existe no cadastro, ou parte dela, também aparece o usuário cadastrado....

2- link: Já quanto ao link, tá funcionando belezinha... biggrin.gifbiggrin.gifbiggrin.gif

Será que você pode me explicar qual a função das / naquela função do link? Eu tinha tentado colocar daquela forma, mas sem as / e com o . só antes e não antes e depois, lógico: por isso que não funcionava... sad.gif

3- cadastro: Cara, eu montei o esquema pra imprimir na página os dados do usuario, e se clicar em editar abre o cadastro pra preencher, só que tem que preencher "tudo" de novo. Tentei usar o mesmo arquivo de impressão pra dar update, mas falta alguma coisa... se não coloco o input, imprime o dado mas não edita e vice-versa... você pode dar uma olhada?

ficou assim: (tirei o html, a formatação, espaços e campos repetidos, mas acho que o importante do caddados.php tá aí ) dry.gif

<?

require_once("conecta.php");

require_once("verifica.php");

$rua = $_POST["Rua"];

$sql = "SELECT rua FROM dados WHERE login =$log'";

$result = mysql_query($sql) or die("Erro no SQL: ".mysql_error());?>

<html>

.....

  <?if(mysql_num_rows($result) > 0) {

  echo "<b>Usuário(a) logado(a) no sistema: ".$_SESSION[login];?>

                    

<table>

<form name='frmEditarUsuario' method='post' action='caddados.php'>

<tr><?while($array = mysql_fetch_array($result)) {

$query = "UPDATE dados SET rua='$rua' WHERE login = '$log'";

$resultado = mysql_query($query) or die('error: ' . mysql_error());

?>

<td>Rua:</td>

<td><input name='Rua' id='Rua'>

<?echo $array['rua];?></td></tr>

<tr><td>

<input type='submit' value='E D I T A R' name='pbRegistrar'>

</td></tr></form></table>

<?}

}?>

</html>

tem alguns campos que usam caixa suspensa... aí piorou.... sad.gif

um abração.

dev. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fala, dev!

Que bom que uma parte pelo menos está resolvida.

você quer saber porque eu usei aquelas barras invertidas "\" e quando usar um ponto antes ou depois de uma variável, certo? Vamos lá:

A barra invertida serve pra imprimir um caractere que seria inválido se ele estivesse sozinho. Então, a gente coloca essa barra e depois o caractere. Se eu quero que no meu código fonte esteja escrito:

<a href="pagina.php">

Devo colocar assim dentro do script:

<?php echo "<a href=\"pagina.php\">";

Entendeu? Agora sua outra dúvida.

Pra imprimir o valor de uma variável ou constante, a gente faz assim:

echo $variavel;

ou

echo date("H:i:s");

certo? E pra imprimir só caracteres, nós os escrevemos entre aspas. você usa esse método de " . $variavel . " quando vai misturar num mesmo "echo" variáveis (ou constantes) com caracteres. Aí, se a variável ou a constante estiver numa das extremidades, você faz assim:

echo $variavel . " caracteres que serão impressos depois da variável";

ou assim:

echo "caracteres impressos antes de uma constante " . date("H:i:s");

E se você quiser imprimir a variável (ou constante) no meio dos caracteres:

echo "caracteres iniciais " . $variavel . " caracteres finais";

Entendeu? Não tem segredo! wink.gif

Agora vou ver se acho uma possível causa pra esse problema no seu sistema de busca.

Um abração!

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Illidan.

Cara, consegui resolver o problema da busca, conversando com o Toretto, cheguei à conclusão de mudar a palavra-chave para login, assim a busca fica mais rápida e direta... e desse jeito eu sei fazer biggrin.gif

se puder me ajudar no caso do cadastro... para imprimir os dados na página de edição, agradeço muito porque nesse caso não consegui avançar nada ainda... dry.gif

abraços.

Dev.

Link para o comentário
Compartilhar em outros sites

  • 0

Dev,

Eu te ajudo, sim! Seu problema é que você quer criar uma página como a de cadastro, só que vai servir pra alterar os dados de um usuario já cadastrado, certo?

Mas, que tal abrir um novo tópico pra falarmos disso? Este aqui já está gigante! hehehe rolleyes.gif

Abraços!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...