Jump to content
Daniel Alves

Query SQL falha

Recommended Posts

Daniel Alves

Caros amigos estou com mais uma duvida.

É o seguinte, eu estou a fazer uma pesquisa em que o valor escrito dentro da textbox da pesquisa está a ser guardada na variavel $texto. O código está assim:

$query = "select * from operarios where profissao = $texto";
echo $query;

Só que desta forma a query não dá porque está a imprimir

select * from operarios where profissao = Programador

Para funcionar teria que aparecer entre aspas o valor da pesquisa:

select * from operarios where profissao = "Programador"

Eu estou a fazer o meu primeiro projecto em php e o meu problema maior é a sintaxe das tags e queries

Podem dar-me uma ajudinha?!

Share this post


Link to post
Share on other sites
IvanGS

$query = "select * from operarios where profissao = '".$texto."'";
echo $query;

assim vai funcionar...

Share this post


Link to post
Share on other sites
Daniel Alves

MUITO OBRIGADO =D

Já funciona.

Só mais uma questão...

Para separar campos o que uso?!

Pensei que fosse virgula. Quero pesquisar na coluna NOME e APELIDO e dá me erro de sintaxe...

$query = "select * from operarios where nome, apelido = '".$texto."'";

O que está errado?!?! é a virgula?!

Share this post


Link to post
Share on other sites
anolsi

$texto = mysql_real_escape_string($texto);
$query = 'select * from operarios where nome = "'.$texto.'" OR apelido = "'.$texto.'"';

Na cláusula Where nunca se utilizam virgulas, utilizas antes AND ou OR.

E nunca te esqueças de fazer pelo menos o mysqli_real_escape_string para tentar impedir sql_injection.


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
softklin

Existem tantas formas... É escolher a que mais te agrada:

- A que o IvanGS te deu

"select * from operarios where profissao = \"$texto\"";

'select * from operarios where profissao = "'.$texto.'"';

"select * from operarios where profissao = '$texto'";

$query = sprintf("select * from operarios where profissao = '%s'", $texto);

Como vês, não há falta de alternativas.


Quanto a essa questão da sintaxe, para escolheres os campos podes fazer assim:

$query = "SELECT * FROM operarios WHERE nome LIKE '%$texto%' OR apelido LIKE '%$texto%'"

Vai devolver todos os campos que contenham o valor de $texto no campo nome ou no campo apelido. Segue também a recomendação do Anolsi sobre o tratamento de input.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Daniel Alves

ok ok  :)

Muito obrigado a todos pela ajuda.  :)

De facto as alternativas são muitas. Já me começo a familiarizar com isto.  ;)

E nunca te esqueças de fazer pelo menos o mysqli_real_escape_string para tentar impedir sql_injection.

O que é sql_injection?!

Devo impedir isso?!?!

Desculpa a pergunta. mas não faço mesmo a mínima ideia do que seja.

Muito obrigado a todos ;)

Share this post


Link to post
Share on other sites
Daniel Alves

Brutal  :)

muito obrigado. Já li e entendi para que serve e como usar.

Obrigado pelo alerta.

Cumprimentos a todos

Daniel Alves

MAIS UM TÓPICO RESOLVIDO COM SUCESSO  ;) ;) :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.