2014-07-16 56 views
1

我應該怎麼寫我的PDO準備和這種類型的查詢,其中i 檢查值是否不爲空,則只能將其添加到查詢字符串 bindValue /參數聲明.....如何將mySql查詢轉換爲PDO格式...?

$query = "SELECT * FROM cabs WHERE DATE='$date' "; 
if ($mode!=='' || $mode!=="") 
    $query .="AND MODE='$mode' "; 

if ($tfno!=='') 
    $query .="AND TFNO='$tfno' "; 
    $query .="ORDER BY TIME"; 

回答

1

快速回答,未經測試:

<?php 
$params = array(':date' => $date); 
$query = "SELECT * FROM cabs WHERE DATE=':date' "; 
if ($mode!=='' || $mode!=="") { 
    $query .="AND MODE=':mode' "; 
    $params[':mode'] = $mode; 
} 

if ($tfno!=='') { 
    $query .="AND TFNO=':tfno' "; 
    $params[':tfno'] = $tfno; 
} 
$query .="ORDER BY TIME"; 

$req = $dbh->prepare($query); 
$req->execute($params); 

只需按下每個查詢獲取更多的過濾器的時間參數數組中,並使用一個名稱應該是比較容易的,我不知道,array_push將保持順序,以..

+0

如果'array_push'沒有保存順序,那麼它是一個非常愚蠢的函數。也就是說,我同意使用命名參數 - 使您的查詢更容易維護。 –

+0

ohkk會嘗試儘快 – PRP

+0

@NiettheDarkAbsol我記得有數組中的默認索引的問題,不記得是什麼。所以是的,似乎很明顯,array_push會完成這項工作,但是因爲我一次擁有數組一次...... – Aif