Ir para conteúdo

Arquivado

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

mayhem

Erro em consulta SQL

Recommended Posts

Boa tarde primeiramente, estou executando uma busca no meu banco para apresentar dados em div, a conexão funciona pois possui um include que 
uso para outras buscam que funcionam perfeitamente, vou colocar o código:

    $numero = $_POST{'numero'};
    $ano = $_POST{'ano'};
    $tipo =  $_POST{'tipo'};
    $row = "";
    
     $strSQL ="SELECT p_a.n_p, p_a.t, p_a.i_s, S_S.d_s, S_S.i_s, S_T.d_t, S_T.I_T
              FROM p_a, S_S, S_T
              WHERE p_a.i_s = S_S.i_s AND
                     p_a.i_t_p = S_T.i_t AND
                     p_a.n_p LIKE ".$numero." AND    
                     p_a.n_a_p LIKE ".$ano." AND
                     S_T.d_t LIKE ".$tipo." ";
            $rs = mysql_query($strSQL) or die(mysql_error());                                        
            while($row = mysql_fetch_array($rs)){
                    echo "<table><tr><td><strong>Número:" .$row['p_a.n_p']. "</strong</td></tr>";
                    echo "<tr><td><strong>Ano:" .$row['p_a.n_p']. "</strong</td></tr>";
                    echo "</table>";    
                    $resource = mysql_query($strSQL) or die(mysql_error());
                    echo $strSQL;
            }

 

no echo ele me retorna a código da consulta com os valores das variavéis retornados do fom HTML,  mas n retorna nenhum dado do banco, se executo a mesma consulta diretamente no banco, ele gera a linha ao qual necessito corretamente, fiz algumas buscas para entender o que poderia estar ocorrendo mas realmente entrei em um beco sem saída, o que pode estar ocorrendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estrutura SQL:

SELECT * FROM tabela WHERE coluna LIKE 'parametro';

 

Note que o parâmetro se encontra dentro de aspas simples, para representar valores.

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, mayhem disse:

Desculpe, mas nesse caso, estou concatenando o valor de uma variável, o uso de aspas duplas n seria problema, ou estou errado?

 

Depende do tipo de dados das tuas variáveis, mas como estás a usar o operador LIKE, provavelmente alguma (ou todas) das variáveis $numero, $ano e $tipo serão do tipo string e, se for esse o caso, tens de ter isso em consideração no corpo da consulta.

 

Algo assim:

 

$strSQL ="SELECT p_a.n_p, p_a.t, p_a.i_s, S_S.d_s, S_S.i_s, S_T.d_t, S_T.I_T
          FROM p_a, S_S, S_T
          WHERE p_a.i_s = S_S.i_s 
          AND p_a.i_t_p = S_T.i_t 
          AND p_a.n_p LIKE '".$numero."'
          AND p_a.n_a_p LIKE '".$ano."'
          AND S_T.d_t LIKE '".$tipo."' ";

Isto irá traduzir-se em (...) AND S_T.d_t LIKE 'XPTO', que é a sintaxe correcta quando se trabalha com strings.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, wootzor disse:

 

Depende do tipo de dados das tuas variáveis, mas como estás a usar o operador LIKE, provavelmente alguma (ou todas) das variáveis $numero, $ano e $tipo serão do tipo string e, se for esse o caso, tens de ter isso em consideração no corpo da consulta.

 

Algo assim:

 


$strSQL ="SELECT p_a.n_p, p_a.t, p_a.i_s, S_S.d_s, S_S.i_s, S_T.d_t, S_T.I_T
          FROM p_a, S_S, S_T
          WHERE p_a.i_s = S_S.i_s 
          AND p_a.i_t_p = S_T.i_t 
          AND p_a.n_p LIKE '".$numero."'
          AND p_a.n_a_p LIKE '".$ano."'
          AND S_T.d_t LIKE '".$tipo."' ";

Isto irá traduzir-se em (...) AND S_T.d_t LIKE 'XPTO', que é a sintaxe correcta quando se trabalha com strings.

 

Correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essas variáveis são todas do tipo INT, inseri o aspas como citado, mas o resultado continua sendo a busca em si, deveria trocar a estrutura da tabela ou apenas usar o  "=" para as consultas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa!

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.