[英]php mysql - search field and category if not null
我有一個用於搜索數據庫的簡單php mysql搜索,但是,似乎無法從搜索字段和類別中搜索文本,但是我只希望它被選中時搜索類別,
這是我嘗試過的代碼:
if ($search !== null){
$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) ORDER BY price ".$price." LIMIT ".$start.", ".$limit;
$q = $conn->prepare($sql) or die("failed!");
// Bind the params to the placeholders
$q->bindParam(':search', $search, PDO::PARAM_STR);
$q->execute();
}
if ($search !== null && $category !== null){
$sql = "SELECT * FROM people WHERE MATCH (lname,fname) AGAINST (:search IN BOOLEAN MODE) and category=:category ORDER BY price ".$price." LIMIT ".$start.", ".$limit;
$q = $conn->prepare($sql) or die("failed!");
// Bind the params to the placeholders
$q->bindParam(':search', $search, PDO::PARAM_STR);
$q->bindParam(':category', $category, PDO::PARAM_STR);
$q->execute();
}
但是,如果選中該選項,它將仍然忽略類別字段選項! 有任何想法嗎?
它們的設置如下:
// Check and set category
$category = (!empty($_GET['category']) ? $_GET['category'] : null);
// Check and set search
if(!empty($_GET['search'])){
$search = $_GET['search'];
}else{
$search = null;
}
進行一些調試,以確保已設置$search
和$category
。 那很可能是您的問題。 從它的外觀來看,應該設置$category
(因為您說它來自查詢字符串),但是只需檢查一下以確保。 就像是:
if($category !== null)
die("category = $category");
else {
die("no category");
}
//do same test for $search
如果用戶通過鏈接( <a href="search.php?category=Books">Books?</a>
)訪問此頁面,則看不到如何設置$_GET['search']
。
我建議您將if
語句更改為更有效(僅應執行1個):
if ($search !== null){
if($category !== null){
//query with category
}
else {
//query w/o category
}
}
另外,我將使用isset()
來檢查這些變量是否被實例化,而不是empty()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.