php - MySQL:多条件查询

标签 php mysql pdo

我正在创建详细的产品搜索。我验证了我的变量已正确发布,但查询没有找到任何内容。我的问题是:

此查询中可能存在什么问题?在 SQL 中进行详细搜索的最佳解决方案是什么?

<?php

if ( 
    isset($_POST["productName"]) || isset($_POST["searchCategory"]) || 
    isset($_POST["searchManufacturer"]) || isset($_POST["costFrom"]) || 
    isset($_POST["costTo"])
){

    $stmt=$user_home->runQuery("SELECT* FROM Products
        WHERE (productTitle='$_POST[productName]' OR '$_POST[productName]' IS NULL)
        AND   (category='$_POST[searchCategory]' OR '$_POST[searchCategory]' IS NULL)
        AND   (manufacturer='$_POST[searchManufacturer]' OR '$_POST[searchManufacturer]' IS NULL)

    ");
    echo $stmt->rowCount();
} 

最佳答案

尝试正确形成WHERE语句。您应该只为 productTitlecategorymanufacturer 字段添加条件,然后 isset 正确的 POST 字段。

试试这个代码:

<?php

if (
    isset($_POST["productName"]) || isset($_POST["searchCategory"]) ||
    isset($_POST["searchManufacturer"]) || isset($_POST["costFrom"]) ||
    isset($_POST["costTo"])
){
    $conditions = array();
    if (isset($_POST['productName'])) {
        $conditions[] = "(productTitle='".$_POST['productName']."')";
    }

    if (isset($_POST['category'])) {
        $conditions[] = "(category='".$_POST['searchCategory']."')";
    }

    if (isset($_POST['searchManufacturer'])) {
        $conditions[] = "(manufacturer='".$_POST['searchManufacturer']."')";
    }
    $where = implode(' AND ', $conditions);
    if ($where) {
        $where = 'WHERE '.$where;
    } else {
        $where = "";
    }

    $stmt=$user_home->runQuery("SELECT * FROM Products ". $where);
    echo $stmt->rowCount();
}

关于php - MySQL:多条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529748/

相关文章:

passwords - 恢复 MySQL 数据库的问题 - mysqldump 问题

php - 将值和数组添加到 PDO 执行方法

php - 如何授予对 PostgreSQL 表的有限权限?

php - 如何将查询结果分配给 Opencart/PHP 中的变量?

javascript - 加载更多 Action jquery

javascript - Chart.js 无法从 php 读取元素作为标签

php - 使用 PHP 从 mysql db 中选择并回显单个字段

mysql - JSP 和 MySQL |创建表时出错

php - 将日志与弹性时间安排进行匹配

php - 在数据库中创建可用表的下拉列表