php - Mysql 多条件查询结果

标签 php mysql

致任何想做同样事情的人:

此代码响应多个 HTML 选择,如果用户在没有过滤器的情况下按下按钮,它会显示一个 SELECT *。

Victor Koenders 修复了查询,谢谢。

正如 LPChip 指出的那样,foreach 需要两个不同的变量,一个调用函数,另一个显示表中的表列。

列上的简单注释不起作用,只有当我删除它们时它才起作用,如 SELECT * FROM table WHERE variable = ´criteria´。

我将 LPChip 标记为答案,因为该死的 foreach 让我无法自拔。

我希望这对这里的人有所帮助,这个网站很棒。

public function filterFood() {

    $variable1 = $_POST['variable1'];   
    $variable2 = $_POST['variable2'];
    $variable3 = $_POST['variable3'];
    $criteria1 = $_POST['criteria1'];   
    $criteria2 = $_POST['criteria2'];
    $criteria3 = $_POST['criteria3'];

    $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    $query = "SELECT * FROM food";
    $conditions = array();

    if($criteria1 !="") {
      $conditions[] = $variable1." = '".$criteria1."'";
    }
    if($criteria2 !="") {
      $conditions[] = $variable2." = '".$criteria2."'";
    }
    if($criteria3 !="") {
      $conditions[] = $variable3." = '".$criteria3."'";
    }

    $sql = $query;
    if (count($conditions) > 0) {
      $sql .= " WHERE " . implode(' AND ', $conditions);
    }

    //$result $this->db_connection->query($sql);
    return $this->db_connection->query($sql);

    var_dump($sql);
}

并且:

<?php

foreach($filter_food->filterFood() as $filtered_food) {
?>

终于可以 sleep 了

最佳答案

foreach($filter_food->filterFood() as $filter_food)

这永远行不通,因为您正在使用数组 $filter_food,然后您生成每个结果 $filter_food,这会导致回环,因此它行不通。

您可以将 as $filter_food 更改为 $filtered_food 或任何其他内容以使其正常工作。

另外,我通常这样写我的查询:我使用``引号的任何列或表,以及我使用“...”的任何变量这可以解决您的查询属性问题。特别是引用表格,因为它可能会将其中一个表格视为一个函数。

您的查询将变为:

SELECT * FROM `food` WHERE `container_food` = "SACO" AND `animal_name_food` = "GATO"

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

相关文章:

php - Mysqli::real_connect() 每 24 小时断开一次管道

mysql - 如何更新主键?

php - 删除记录返回 SQLSTATE[42000] 错误

php - Laravel Eloquent 查询修改

php - 将 mysqli 转换为 PDO 时出现问题 | PHP 数据库

mysql - 如果外键为 NULL 或 NOT NULL 则获取数据

c# - 如何在 Mono Ubuntu 上找到 .Net Framework Data Provider for MySql 的存在?

mysql - 选择不同值 ColumnA,同时 ColumnB = Value1 且 ColumnB = Value2

MySQL 高 CPU 使用率与 InnoDB

Mac 上不显示 PHP