每个循环的多输入和多列PHP

时间:2019-04-08 10:53:31

标签: php mysql arrays variables foreach

当前通过foreach函数获取所有get请求。查看是否列在“季节”列中。下一步是再增加一列,以检查是否有任何请求类似于下一个列值。第二列必须是AND而不是AND,这意味着第一列季节是否包含任何get请求并且第二列包含任何GET请求。

当前:

$array_name = array();
foreach ($_GET as $key => $value) {
    $array_name[] = "'%" . escape_string($value) . "%'";
};

$string = implode(' OR season LIKE ', $array_name);

$tank = "SELECT * FROM shrubs2 WHERE season LIKE {$string}";
echo $tank;          

第一次编辑:

      function searchByColumn($values, $columnName) {
      $string = implode(" OR $columnName LIKE ", $values);
      return "SELECT * FROM shrubs2 WHERE $columnName LIKE $string";
  }

  $array_name = array();
  foreach ($_GET as $key => $value) {
      $array_name[] = "'%".escape_string($value)."%'";
  }

  $colNames = array("season", "日照"); // can add here more column names
  foreach($colNames as $colName) {
      $str = searchByColumn($array_name, $colName);
  }

  echo $str;


 ///// creating the query with the variable $str

1 个答案:

答案 0 :(得分:0)

您可以定义功能来搜索每一列:

function searchByColumn($values, $columnName) {
    $string = implode(" OR $columnName LIKE ", $values);
    return "SELECT * FROM shrubs2 WHERE $columnName LIKE $string";
} 

然后将其用作:

$array_name = array();
foreach ($_GET as $key => $value) {
    $array_name[] = "'%".escape_string($value)."%'";
}

$colNames = array("season"); // can add here more column names
foreach($colNames as $colName) {
    $str = searchByColumn($array_name, $colName);
    echo $str; // or run it
}