致任何想做同样事情的人:
此代码响应多个 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/