Ir para conteúdo

POWERED BY:

Arquivado

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

Maneju

[Resolvido] Consulta SQL retornando errado

Recommended Posts

Olá.

 

Eu tenho uma tabela de produtos que contém um campo EAN (código de barras). Não há códigos duplicados, cada produto tem seu EAN único. Qdo faço uma consulta SQL na base de dados pelo campo EAN (no phpMyAdmim), o resultado da pesquisa está correto, me retorna apenas o registro relacionado ao EAN informado.

 

Porém a mesma instrução SQL sendo executada pelo PHP, me retorno o registro correto e o subsequente a ele. Nunca tive problemas deste tipo, consultando no PHP pelo ID por exemplo, fica correto.

 

Alguém tem alguma idéia do que possa ser?

 

 

No phpMyAdmin

 

SELECT * FROM `escriturare_produtos` WHERE EAN = '0x0x9x09'

 

 

No PHP

 

$sql = "SELECT * FROM `escriturare_produtos` WHERE `EAN` = {$id} ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correto seria:

 

$sql = "SELECT * FROM escriturare_produtos WHERE EAN='$id' ";

Erro esta nas aspas. Eu removi elas, e no seu where não use {$id} e sim variavel dentro de aspas simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Max.

 

Não é este o problema não. Eu já havia feito desta maneira que você mencionou e tb não funcionou. Algumas informações que percebi aqui usando: para alguns códigos de barras funcionam, entre eles aqueles que não possuem letras e aqueles que tem menos que 10 caracteres e são numéricos. O campo é um varchar(13).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

O problema acredito ser esta linha:

 

$id = (int)$id;

é que o mesmo INPUT que eu digito o ID do produto eu posso digitar o código de barras do mesmo. Então resolvi testar o tamanho da variável $id, se for menor que 7, a consulta seria pelo ID, caso contrário pelo EAN. Porém o strlen($id) sempre me retorna 0, veja abaixo:

 

teste no localhost:

 

http://localhost//produtosnotas_pesquisa.php?Codigo=6666666666

 

resultado do teste acima:

 

0 [{EAN: '6666666666', id: '13', Nome: 'Produto teste', Valor_Com: '44.00'}]

O zero ali à esquerda é o strlen($id).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Féra

Eu teste aqui:

<?php
   $id = 13;
   echo strlen("$id");

   $id = '13';
   echo strlen($id);

   $id = 13;
   echo strlen("$id");
?>

Mostrou 2. Certo!

 

Posta o que código que você montou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.

 

Tb testei da forma que você fez em uma página à parte e funciona. O problema é quando o conteúdo da variável $id é recebido pelo POST e não digitado dentro da própria página PHP.

 

$id = $_POST['Codigo'];

 

Meu código está assim:

 

$id = $_POST['Codigo'];     
$id = (string)$id;     
echo strlen($id);     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

Vamos tentar tirar o CAST e só colocar a variável na função strlen().

 

Assim:

$id = $_POST['Codigo'];
echo strlen("$id");

Mas agora que vi uma coisa.O Código está vindo por parâmetro no LINK não é ?

Então você não pode receber como POST, mas sim como GET.

 

$id = $_GET['Codigo'];
echo strlen("$id");

POST é para informações vinda do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você não pode receber como POST, mas sim como GET.

Ah, tem razão.

 

Agora zerou, ficou certinho.

 

Valeu fera, obrigado.

 

ps - só por curiosidade. Sempre testei no link com POST e sempre funcionou. Só tive problema agora com a STRLEN que sempre retornava zero, mas em outras ocasiões sempre funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee =)

 

Boa!

ps - só por curiosidade. Sempre testei no link com POST e sempre funcionou. Só tive problema agora com a STRLEN que sempre retornava zero, mas em outras ocasiões sempre funcionou.

 

FUSSO! Impossível woieowiew!

Que coisa! :)

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.