在sql中添加where变量

时间:2015-01-14 00:53:17

标签: php sql

如果用户选择除“all”之外的任何内容,则会导致涉及KodDaerah的where语句

$where = '';
$sql= "SELECT  * FROM   maklumatakaun 
        LEFT JOIN detailakaun ON maklumatakaun.id = detailakaun.id 
        LEFT JOIN maklumatbilakaun ON maklumatakaun.NoAkaun = maklumatbilakaun.NoAkaun 
        LEFT JOIN kodjenisakaun ON detailakaun.KodJenisAkaun = kodjenisakaun.KodJenisAkaun
        LEFT JOIN kodlokasi ON detailakaun.KodLokasi = kodlokasi.KodLokasi
        LEFT JOIN kodkategori ON maklumatakaun.KodKategori = kodkategori.KodKategori        
        LEFT JOIN koddaerah ON maklumatakaun.KodDaerah = koddaerah.KodDaerah
        WHERE maklumatakaun.KodKategori = '$KodKategori'        
        AND detailakaun.KodJenisAkaun = '$KodJenisAkaun'
        AND maklumatbilakaun.BulanBil = '$BulanBil' 
        AND maklumatbilakaun.TahunBil ='$TahunBil' 
        ".mysql_real_escape_string($where)."
        ORDER BY koddaerah.NamaDaerah ";

if($KodDaerah != "all"){
  $where = "AND maklumatakaun.KodDaerah = '$KodDaerah' "; //Add your where statement here
  //Whatever you want to do
}  
else {
  $where = "";
}

如果用户选择all,那么系统将只使用我提供的当前sql语句,现在我不知道出了什么问题,所以这里是用户从下拉列表框中选择KodDaerah的地方

<?php include('dbase.php');
$sql = "SELECT KodDaerah, NamaDaerah FROM koddaerah";
$result = mysql_query($sql);
echo "<select name='KodDaerah' id='KodDaerah' class='input_field' required />
<option>Pilih Daerah</option>
<option value='all'>Seluruh Pahang</option>";
while ($kod = mysql_fetch_array ($result)){
echo "<option value=".$kod['KodDaerah'].">" .$kod['NamaDaerah']."</option>
<option value='all'>Seluruh Pahang</option>";
}
echo "<?select>";
?>

现在问题就是当我选择某个KodDaerah时,它只会运行提供的sql查询而不使用$ where中的WHERE语句。有人可以帮忙吗?

编辑:

$sql = $sql . $where;
$result = mysql_query ($sql);
$BilAkaun = mysql_num_rows ($result);

1 个答案:

答案 0 :(得分:1)

尝试向上移动 if声明:,删除 mysql_real_escape_string (之前逃跑)

$where = '';
if($KodDaerah != "all"){
  $where = "AND maklumatakaun.KodDaerah = '$KodDaerah' "; //Add your where statement here
  //Whatever you want to do
}  
else {
  $where = "";
}
$sql= "SELECT  * FROM   maklumatakaun 
        LEFT JOIN detailakaun ON maklumatakaun.id = detailakaun.id 
        LEFT JOIN maklumatbilakaun ON maklumatakaun.NoAkaun = maklumatbilakaun.NoAkaun 
        LEFT JOIN kodjenisakaun ON detailakaun.KodJenisAkaun = kodjenisakaun.KodJenisAkaun
        LEFT JOIN kodlokasi ON detailakaun.KodLokasi = kodlokasi.KodLokasi
        LEFT JOIN kodkategori ON maklumatakaun.KodKategori = kodkategori.KodKategori        
        LEFT JOIN koddaerah ON maklumatakaun.KodDaerah = koddaerah.KodDaerah
        WHERE maklumatakaun.KodKategori = '$KodKategori'        
        AND detailakaun.KodJenisAkaun = '$KodJenisAkaun'
        AND maklumatbilakaun.BulanBil = '$BulanBil' 
        AND maklumatbilakaun.TahunBil ='$TahunBil' 
        ".$where."
        ORDER BY koddaerah.NamaDaerah ";

然后再次追加$where

$result = mysql_query ($sql);
$BilAkaun = mysql_num_rows ($result);