我正在創建一個表單,允許用戶搜索不同的標準數據庫:位置,城市,最低價格,最高價格等如何添加多個查詢WHERE語句,可能有或可能沒有值
我有一個「基本」選擇語句:SELECT * FROM table
。
在搜索表單中,有幾個文本框和下拉列表可能有也可能沒有值,具體取決於用戶想要搜索的內容。
我無法弄清楚如何在可能或不可能有用於特定表列的值(基於用戶選擇)的情況下向sql語句添加WHERE子句。
感謝任何人的幫助!
我正在創建一個表單,允許用戶搜索不同的標準數據庫:位置,城市,最低價格,最高價格等如何添加多個查詢WHERE語句,可能有或可能沒有值
我有一個「基本」選擇語句:SELECT * FROM table
。
在搜索表單中,有幾個文本框和下拉列表可能有也可能沒有值,具體取決於用戶想要搜索的內容。
我無法弄清楚如何在可能或不可能有用於特定表列的值(基於用戶選擇)的情況下向sql語句添加WHERE子句。
感謝任何人的幫助!
在生成SQL的代碼中,檢查用戶輸入的字段,並在查找到更多來自用戶的輸入時向查詢附加更多檢查。 PHP中的快速示例:
$sql = "SELECT * FROM table";
$where_checks = array();
if (isset($_POST['city']))
$where_checks[] = "city = '{$_POST['city']}'";
if (isset($_POST['location']))
$where_checks[] = "location = '{$_POST['location']}'";
// Add more stuff here
if (count($where_checks) > 0)
$sql .= " WHERE " . implode('AND', $where_checks);
// run query
我故意忽略衛生/轉義後輸入以保持示例簡單。但你明顯必須消毒輸入以及。
注意WHERE
之前的額外空間,否則查詢將被打破。
有道理,SilverSnake。並感謝有關清理用戶條目的提醒。謝謝! – marky 2012-07-12 12:39:07
@eventide當然可以!並感謝Lex修復我愚蠢的代碼錯誤。 :) – SilverSnake 2012-07-12 12:40:00
使用這種方法
select
columns
from
table
where
([email protected] or @location is null) and
([email protected] or @city is null) and
.
.
可以顯示一些代碼?你有什麼嘗試? – jcho360 2012-07-12 12:27:58
你的意思是「可能或不可能」。使用select *。 – 2012-07-12 12:28:11