Несколько входов и несколько столбцов для каждого цикла PHP

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

привет и добро пожаловать в SO. непонятно в чем ваш вопрос? Прочтите Как спросить

Irreducible 08.04.2019 13:04

Добавил еще немного контекста, надеюсь, это поможет

dddddddooooosss 09.04.2019 01:54
ПРЕДУПРЕЖДЕНИЕ: по возможности используйте подготовленные заявления, чтобы избежать ввода произвольных данных в ваши запросы и создания Ошибки внедрения SQL. Это довольно просто сделать в mysqli и ЗОП, где любые пользовательские данные указываются с помощью индикатора ? или :name, который позже заполняется с помощью bind_param или execute в зависимости от того, какой из них вы используете.
tadman 09.04.2019 01:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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
}

Я отредактировал свой код, чтобы вы могли видеть, делаю ли я что-то не так, в настоящее время он перебирает только значение 2. в массиве colNames.

dddddddooooosss 09.04.2019 02:03

query I get is SELECT * FROM shrubs2 WHERE 日照 LIKE '%夏%' OR 日照 LIKE '%秋%' OR 日照 LIKE '%半日陰%'

dddddddooooosss 09.04.2019 02:10

@dddddddooooosss - Обратите внимание, что вы echo$str вне цикла foreach - вам нужно повторить / запустить его внутри цикла. Мой пост решил вашу проблему?

dWinder 09.04.2019 20:30

Другие вопросы по теме