2012-07-04 99 views
0

我想創建多個搜索where語句$ where_search是來自帖子表單的多重條件。 但是當我使用這段代碼「.where_search」時發生stil錯誤。在哪裏條件與mysql_num_rows分頁從mysql_num_rows選擇查詢

$tampil2 = mysql_query("SELECT * FROM bb where ".$where_search." and kd_kelompok='2' and kd_komoditi='11' and nm_sebutan IS NOT NULL "); 

這是完整的代碼。

$where_search = "kd_pok='2' and kd_komoditi='11' "; 

if (isset($_POST['lakpus'])) 
{ 

    if (empty($_POST['lakpus'])) 
    { 

    } 
    else 
    { 

     if (empty($where_search)) 
     { 
      $where_search .= "lakpus = '$lakpus' "; 
     } 
     else 
     { 

      $where_search .= "AND lakpus = '$lakpus' "; 

     } 
    } 
} 

if (isset($_POST['kd_por'])) 
{ 
    $kd_por = $_POST['kd_por'] ; 

    if (empty($_POST['kd_por'])) 
    { 

    } 
    else 
    { 

     if (empty($where_search)) 
     { 
      $where_search .= "kd_por = '$kd_por' "; 

     } 
     else 
     { 

      $where_search .= "AND tab1.kd_por = '$kd_por' "; 

     } 
    } 
} 

$max=15; 
$tampil2 = mysql_query("SELECT * FROM bb where ".$where_search." and kd_kelompok='2' and kd_komoditi='11' and nm_sebutan IS NOT NULL "); 
$jml = mysql_num_rows($tampil2); 
$jmlhal = ceil($jml/$max); 
+0

你正在得到什麼錯誤?此外,你的代碼容易受到SQL注入的攻擊,並且可能會被訓練有素的雞打破(這對你來說並不是不尊重:即使在2012年,它也只是教程的教導)。改用參數化的準備語句。您應該使用PDO或MySQLi代替php_mysql,因爲它是_deprecated_。 – Lusitanian

+0

這是一個錯誤代碼....警告:mysql_num_rows():提供的參數不是有效的MySQL結果資源 –

+0

好的。在你運行該函數之前,'echo mysql_error();'看看它的結果,然後發佈:) – Lusitanian

回答

2

也許你的錯誤是在這裏:

$where_search .= "AND tab1.kd_por = '$kd_por' "; 

因爲你沒有申報 「TAB1」。嘗試改變這一點:

$where_search .= "AND kd_por = '$kd_por' "; 

編輯1

你沒有恢復了var $lakpus$_POST befofe使用它。這是您必須更新的代碼的一部分。

... 

else 
{ 

    $lakpus = $_POST['lakpus']; 

    if (empty($where_search)) 
    { 
     $where_search .= "lakpus = '$lakpus' "; 
    } 

    ... 

EDIT 2

正如我在評論中說,嘗試調用mysql_num_rows()的mysql_query(後),如下圖所示。

$qry = "SELECT * FROM bb where ".$where_search; 

$res = mysql_query($qry); 

$num = mysql_num_rows($res); 

$row = mysql_fetch_array($res); 
+0

是的,我錯了,但問題出在$ tampil2 = mysql_query(「SELECT * FROM bb where」。$ where_search。 kd_kelompok ='2'和kd_komoditi = '11'和nm_sebutan IS NOT NULL「);看哪裏條件「$ where_search」。是正確的寫代碼? –

+0

@AndiNugroho,請參閱我的新編輯,並告訴我,如果作品 –

+0

我已經在代碼的開頭寫了var ...但是當iam手動編寫此代碼而沒有多個搜索條件時它的工作....'$ tampil2 = mysql_query( 「SELECT * FROM bb where kd_lakpus ='$ _ POST [lakpus] and kd_por ='$ _ POST [kd_por]'and kd_kelompok ='2'and kd_komoditi = '11'and nm_sebutan IS NOT NULL」);'該代碼是手動的var search –