簡體   English   中英

php mysql-搜索字段和類別(如果不為null)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM