• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

revolucao

erro de sql....

11 mensagens neste tópico

Boas

eu tenho a seguinte função :

function p($pq)
{
	$s = mysql_query(sprintf("SELECT nome FROM tabela WHERE nome LIKE '%%s%'",GetSQLValueString($pq,"text"),escreve($con=con())));
	return $s;
}

esta função nao funciona, mas a seguinta ja funciona:

function p($pq)
{
	$s = mysql_query(sprintf("SELECT nome FROM tabela WHERE nome LIKE %s'",GetSQLValueString($pq,"text"),escreve($con=con())));
	return $s;
}

mas assim eu so pesquiso pelo nome que quero, mas con a decima eu deveria pesquisar nomes que estivessem dentro de outro nome ou seja se pesquisar por: eu , todas os campos da tabela que tenham " eu" deveriam aparecer, mas isso nao esta a acontecer :     pesquisa "eu" : resultado "eut", "treuff", "trgheu", mas isto nao acontece.

porque ? alguém sabe?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens que escapar o wildcard (%) e meter %%

Ja esperimentei, mas nao funciona, será que dá para por novamente a função, mas desta vez corrigida

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$s = mysql_query(sprintf("SELECT nome FROM tabela WHERE nome LIKE '\%%s\%'",GetSQLValueString($pq,"text"),escreve($con=con())));

Não funciona assim?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
function p($pq)
{
	$s = mysql_query(sprintf("SELECT nome FROM tabela WHERE nome LIKE '%%%s%%'",GetSQLValueString($pq,"text"),escreve($con=con())));
	return $s;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal não sei o que se passa, mas não dá de nenhuma das maneiras, ja tentei enumeras formas, mas nada, bem fica a pesquisar só pelo nome correcto..

obrigado pela atenção...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha lá, o que é que retorna GetSQLValueString($pq,"text") e escreve($con=con()); ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha lá, o que é que retorna GetSQLValueString($pq,"text") e escreve($con=con()); ?

O GetSQLValueString($pq,"text") é uma validação de texto  e escreve($con=con() é uma função que vai ligar a bd, será que o erro esta ai?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O GetSQLValueString($pq,"text") é uma validação de texto  e escreve($con=con() é uma função que vai ligar a bd, será que o erro esta ai?

olha já funciona, passei directamente a variável....., ficou assim:

$sql_pes = mysql_query(sprintf("SELECT id_tshirt,imagem,nome FROM tshirt WHERE nome LIKE '%%$pesq%%'",ligar_bd($conexao=conexao())));

porreiro, boa dica....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves ter aí uns parentises trocados, ou assim, porque o retorno do ligar_bd não tem sítio para onde ir na string formatada que estás a passar ao sprintf.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
function p($pq)
{
	$s = mysql_query(sprintf("SELECT nome FROM tabela WHERE nome LIKE %s'",GetSQLValueString($pq,"text"),escreve($con=con())));
	return $s;
}

Separa a tua instrução em várias mais pequenas.

function p($pq)
    {
        $con = con();
        escreve($con);
        $parm = GetSQLValueString($pq, "text");
##      $sql = sprintf("SELECT nome FROM tabela WHERE nome LIKE %%%s%%'", $parm);
        $sql = "SELECT nome FROM tabela WHERE nome LIKE %$parm%";
        $s = mysql_query($sql, $con);
        return $s;
    }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora