有没有更好的方法来检查POST值是否为空,然后显示所有MySQL

时间:2016-02-03 14:20:38

标签: php mysql

我通过帖子从表单发送多个值。如果未在表单上选择值,则POST将为empy值('$ _POST ['']')。如果为空,则value必须显示所有记录。有没有更好的方法来写这个:

$oglas= mysql_query("SELECT id, user_name, tip_ponude, tip_objekta, vrsta_nekretnine, grad, opstina, naselje, cena, kvadrat, broj_soba, tekst, aktivan FROM `oglas` WHERE 1=1 AND

( tip_ponude = '$_POST[tip_ponuda]' ) AND 

( case when '$_POST[objekat]'     is  NULL or '$_POST[objekat]' != '' then  tip_objekta = '$_POST[objekat]' end ) AND 

( case when '$_POST[us_states]'   is  not NULL or '$_POST[us_states]' != '' then 1=1  else grad = '$_POST[us_states]' end ) AND 

(  case when '$_POST[city_names]' is NULL or '$_POST[city_names]' = '' then 1=1 else  opstina = '$_POST[city_names]' end ) AND 

( case when '$_POST[naselje]'     is NULL or '$_POST[naselje]' = '' then 1=1 else naselje = '$_POST[naselje]' end ) AND

( case when '$_POST[cena]'  is NULL or '$_POST[cena]' = '0' or '$_POST[cena]' = '' then 1=1 else cena <= '$_POST[cena]' end ) AND 

( case when '$_POST[kvadratura]'  is NULL or '$_POST[kvadratura]' = '0' or '$_POST[kvadratura]' = '' then 1=1 else kvadrat <= '$_POST[kvadratura]' end ) AND 

( case when '$_POST[broj_soba]'    is NULL or '$_POST[broj_soba]' = '' then 1=1 else broj_soba = '$_POST[broj_soba]' end ) ") or  die(mysql_error());

由于

1 个答案:

答案 0 :(得分:0)

我首先使用php验证帖子并使用implode将其插入查询。

例如

$whereArry = array();    
if(!empty($_POST['objekat']){
   $whereArry[] = " objekat = " . $_POST['objekat'];
}

设置完所有变量后。

$where = implode(" AND ", $array);
$sql = "SELECT ...... FROM .... WHERE {$where} ";