[英]Create a sql query based on the existence of variables ($_POST)
正如我在標題中所解釋的,我想在我的php頁面上創建一個sql查詢,以返回存在變量的函數的特定結果。 我在頁面頂部有一個表單,其中包含一些輸入(日期,名稱等),單擊后,將刷新頁面並顯示正確的結果。
目前,我的語法是:
if (isset($_POST['dated']) && $_POST['dated'] != null){
$doleances = $bdd->prepare('SELECT * FROM doleance WHERE Priorite < 5 AND Date >= ? ORDER BY ID DESC');
$doleances->execute(array($newDate));
}
else if (isset($_POST['dated']) && $_POST['dated'] != null && isset($_POST['datef']) && $_POST['datef'] != null){
$doleances = $bdd->prepare('SELECT * FROM doleance WHERE Priorite < 5 AND Date BETWEEN ? AND ? ORDER BY ID DESC');
$doleances->execute(array($newDate, $newDate2));
}
else if{...}
else if{...}
...
但我認為有一種更好的方法...預先感謝
您可以使用按需構建的方法:
// Create holders for the WHERE clauses and query parameters
$where = array(
"Priorite < 5" // this looks common across all queries?
);
$params = array();
// Now build it based on what's suppled:
if (!empty($_POST['dated'])){
if (!empty($_POST['datef'])){
// Add to the params list and include a WHERE condition
$params['startdate'] = $_POST['dated'];
$params['enddate'] = $_POST['datef'];
$where[] = "Date BETWEEN :startdate AND :enddate";
}
else{
// Add to the params list and include a WHERE condition
$params['date'] = $_POST['dated'];
$where[] = "Date >= :date";
}
}
else if { ... }
else if { ... }
// Now build and execute the query based on what we compiled together
// from above.
$sql = "SELECT * FROM doleance "
. (count($where) > 0 ? "WHERE " . implode(" AND ", $where) : "")
. " ORDER BY ID DESC";
$doleances = $bdd->prepare($sql);
$doleances->execute($params);
首先創建可能發布的變量的數組:
$possibleArgs = array( 'dated', 'datef' );
然后遍歷每個$possibleArg
並檢查相應的$_POST[possibleArg]
是否為空。 如果不為空,則將其添加到謂詞中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.