Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo N. Sousa

[Resolvido] Como posso resolver isso (php mysql)

Recommended Posts

A questão e o seguinte preciso fazer uma consulta no Mysql utilizando

WHERE codigo_cliente='$cliente'

mas caso a variável $cliente esteja vazia retornar todos os clientes.

 

Não encontrei uma maneira óbvia de fazer isso. Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

if( !empty( $cliente ) ){
$sql = "SELECT * FROM `tabela` WHERE `codigo_cliente` = '$cliente'";
}else{
$sql = "SELECT * FROM `tabela`";
}

bem pensado mas não é só uma condição

tem regiao,cliente,boletos_pagos,boletos_abertos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o principio do sql_injection.

 

ex.:

$cliente = '';
$pesquisa = $cliente==NULL ? $pesquisa = "' OR '1'='1" : $pesquisa = $cliente;

mysql_query(SELECT * FROM tabela WHERE codigo_cliente='{$pesquisa}');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o principio do sql_injection.

 

ex.:

$cliente = '';
$pesquisa = $cliente==NULL ? $pesquisa = "' OR '1'='1" : $pesquisa = $cliente;

mysql_query(SELECT * FROM tabela WHERE codigo_cliente='{$pesquisa}');

é funciona

 

Vou analizar uma por uma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem tudo que funciona é correto, você vai criar seu código baseado em gambiarra e preso a SQL.

 

veja um exemplo correto de testar vários campos sem saber se estão empty e se estiver não criar uma query;

 

$CreateArray = array();

$CreateArray[ 'boletos_abertos' ] = 'teste';
$CreateArray[ 'boletos_pagos' ] = 'teste2';
$CreateArray[ 'regiao' ] = '' ;

$CreateWhereClause = array();

foreach( $CreateArray as $field => $value ){

$CreateWhereClause[ $value ] = ( ! empty(  $value ) ? "`$field` = '$value'" : '' );

}

unset( $CreateWhereClause[ '' ] );

$ConstructQuery = implode( ' OR ', $CreateWhereClause );
$ConstructQuery = empty( $ConstructQuery ) ? '1' : $ConstructQuery;

$sql = "SELECT * FROM `tabela` WHERE {$ConstructQuery}";

Obrigado Wercks Oliveira e a todos, solução perfeita!

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.