Несколько входов и несколько столбцов для каждого цикла PHP - PullRequest
1 голос
/ 08 апреля 2019

В настоящее время принимает все запросы на получение через функцию foreach. Смотря, содержит ли колонка под названием сезон. Следующим шагом является добавление еще одного столбца, чтобы проверить, нравится ли какой-либо запрос 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 голосов
/ 08 апреля 2019

Вы можете определить функцию для поиска по каждому столбцу:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...