php mysql - 搜索字段和类别(如果不为空)

标签 php mysql if-statement full-text-search

我有一个简单的 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() .

关于php mysql - 搜索字段和类别(如果不为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845782/

相关文章:

mysql - 从 MySQL 导入 JOINed 表时,数据已被自动删除

php - MYSQL - 文件名的字段类型?

java - If 语句在 For 循环中不起作用

C++ - 带有和不带有 if 语句的奇怪时间测量

php - 通过 magento 安装为我的子域安装的通配符 ssl 无法正常工作

php - 资源 ID#5 PHP MySQL 错误

mysql - `require' : Incorrect MySQL client library version

java - 在 Java 中是否遵循 true?

php - 分组依据并在日期下显示条目

php - 如何在带有 XAMPP 的 Mac 上使用 PHP 运行 ffmpeg