对于任何尝试这样做的人:
该代码响应多个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) {
?>
现在我终于可以睡觉了。
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"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句