我正在做一個MySQL查詢來搜索數據庫中的項目。我已經將變量從搜索表單中提取出來,但是我的WHERE子句出現了一些問題。因爲我不想搜索未在表單中輸入的字段。我在一分鐘的代碼是:PHP MySQL計數器/循環查詢
$query = " SELECT RequestID, clients.ClientName, clients.Username, RequestAssignee, requests.StatusID, requests.PriorityID, StatusName, PriorityName
FROM requests
INNER JOIN clients ON requests.ClientID = clients.ClientID
INNER JOIN statuses ON requests.StatusID = statuses.StatusID
INNER JOIN priorities ON requests.PriorityID = priorities.PriorityID
WHERE ";
if(!empty($RequestID))
{
$query2 .= "RequestID = '" . $RequestID . "' OR ";
}
if(!empty($ClientName))
{
$query2 .= "clients.ClientName = '" . $ClientName ."' OR ";
}
if(!empty($Username))
{
$query2 .= "clients.Username = '" . $Username . "' OR ";
}
if(!empty($RequestAssignee))
{
$query2 .= "RequestAssignee = '" . $RequestAssignee . "' OR ";
}
if(!empty($Status))
{
$query2 .= "statuses.StatusName = '" . $Status ."' OR ";
}
if(!empty($Priority))
{
$query2 .= "priorities.PriorityName = '" . $Priority ."'";
}
但是你可以看到一個問題,即如果有人只搜索一個字段,查詢增加了一個「OR」進行到底,從而導致錯誤:
SELECT RequestID, clients.ClientName, clients.Username, RequestAssignee, requests.StatusID, requests.PriorityID, StatusName, PriorityName FROM requests INNER JOIN clients ON requests.ClientID = clients.ClientID INNER JOIN statuses ON requests.StatusID = statuses.StatusID INNER JOIN priorities ON requests.PriorityID = priorities.PriorityID WHERE RequestID = '3' OR
林猜測我將不得不把某種循環或計數器,但不確定如何接近它。有任何想法嗎?
謝謝,馬特。
這正是我在前面提到的問題中提到的問題。但你當然是最聰明的人,不需要任何建議 – 2011-02-18 12:36:25