Ir ao conteúdo
  • Cadastre-se

PHP Colocar variavel em SELECT LIKE mysql


Posts recomendados

Boa tarde pessoal do fórum, o meu problema é o seguinte estou tentando utilizar   

"SELECT * FROM sgl where nome like '%$livro%'"

para selecionar um campo do meu banco mas   esta sintaxe esta errada, como eu poderia fazer para este comando funcionar ?

OBS :$livro é uma variável

Fico grato qualquer ajuda..

Link para o comentário
Compartilhar em outros sites

Boa noite amigo,

 

O mais correto para isso seria utilizar somente o % no final, para começar a buscar a partir do inicio, e não as silabas, utilize também ".." (aspas duplas) e pontos no inicio e no fim para separar a string, lembre-se de filtrar a mesma e usar addslashes para escapar os dados e proteger contra SQL Injection.

 

Segue um exemplo:

"SELECT * FROM sgl WHERE nome LIKE '".addslashes($livro)."%'"

Grande abraço.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom dia @Gustavo L1m4

 

O que o colega @ArThDsL falou irá funcionar para rodar o código, porém não irá protege-lo de SQL Injection e seu código será vulnerável.

 

Para tornar as suas consultas mais seguras, recomendo fortemente que pesquise um pouco sobre PDO (PHP Data Objects).

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Leonardo0308 disse:

Bom dia @Gustavo L1m4

 

O que o colega @ArThDsL falou irá funcionar para rodar o código, porém não irá protege-lo de SQL Injection e seu código será vulnerável.

 

Para tornar as suas consultas mais seguras, recomendo fortemente que pesquise um pouco sobre PDO (PHP Data Objects).

Boa tarde @Leonardo0308,

 

Caso siga algumas normas de segurança, tal como: Filtragem, validação e escape não vejo problema em referenciar a string diretamente no SELECT.

 

Provavelmente ele está utilizando a função mysqli para realizar tal consulta, apesar de muitos (inclusive eu) acharem que a função se encontra depreciada (o que não é verdade, pois o mysqli veio pra substituir o mysql (essa sim está depreciada)), ainda é muito usada pelos programadores nos dias de hoje, o problema é que, não pode haver erros durante a consulta/inserção/update ou afins, a string sempre deve ser filtrada, validada e escapada antes de ser executada, o addslashes é sómente o escape, mas no meu post acima citei que deve ser filtrada antes de passar pelo procedimento de escape.

 

Dentre isso reforço o comentário do companheiro de que o PDO é realmente mais seguro, pois ele automaticamente corrige alguns erros, tem suas desvantagens, mas, vale muito mais a pena que o mysqli. Reforço também o lembrete de sempre de filtrar e validar antes de passar a variável, até mesmo no PDO!

 

Grande abraço!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!