這裏是頁我問:查詢使用多變量從形式不作爲預期
http://rdavidbeales.com/archiveprototype/advancedsearch.php
我已經得到的查詢做使用從建設性的批評術語一些搜索無視NULL
變量到原來的帖子。
唯一的問題是現在,我不能包括在$where
變量的定義AND
語句,因爲如果只選擇了一個字段,然後我得到一個錯誤的意義AND
聲明。
- 那麼如何在必要時編輯新代碼以包含
AND
?
使用這個鏈接Possible to have PHP MYSQL query ignore empty variable in WHERE clause?我想出了下面的代碼:
$anf = $_POST["artistnameform"];
$df = $_POST["decadeform"];
$stf = $_POST["subjecttermform"];
$ptf = $_POST["phototitleform"];
$where = "WHERE";
if(!empty($ptf)){
$where .= " P.PhotoTitle='$ptf '";
}
if(!empty($anf)){
$where .= " PE.idPeople = '$anf '";
}
if(!empty($stf)){
$where .= " S.idSubjectTerm = '$stf '";
}
if(!empty($df)){
$where .= " P.PhotoCreatedDate LIKE CONCAT ('%', '$df ', '%')";
}
這裏是使用$where
查詢:
$query = "
SELECT P.PhotoTitle,
P.PhotoURL,
P.PhotoCaption,
PE.FirstName,
PE.LastName
FROM Photo P
LEFT JOIN People_has_Photo PHP
ON idPhoto=PHP.Photo_idPhoto
LEFT JOIN People PE
ON idPeople=People_idPeople
LEFT JOIN SubjectTerm_has_Photo SHP
ON idPhoto=SHP.Photo_idPhoto
LEFT JOIN SubjectTerm S
ON idSubjectTerm=SubjectTerm_idSubjectTerm
$where
GROUP BY P.PhotoFileName";
$result = mysql_query($query);
你可以通過一個特定的字符串值,而不是空字符串(例如:<期權價值=「myNull」>請選擇)。這樣你就可以解釋這個字符串(「myNull」)因爲沒有過濾服務器端,所以組成最後的查詢 –
現在我沒有得到回報,因爲不是字段不爲空,我沒有得到回報,因爲該字段不包含'mynull'。這是因爲我沒有在你提到的服務器端過濾它。那究竟是如何完成的?感謝您的想法和快速反應!我在這裏自學,所以我的命名習慣和模糊的語言會隨着我的進步而變得更好。謝謝你的幫助。 –
您的命名策略留下了一些不足之處。我的意思是,爲什麼要分配一個別名,如果你不使用它!?!?!實際上,這裏有很多錯誤,知道從哪裏開始有點困難: - 〜 – Strawberry