Установка переменной PHP, если условие

#php #variables #if-statement #conditional-statements

#php #переменные #if-оператор #условные операторы

Вопрос:

Я создаю функцию, которая должна проверять несколько входных данных и создавать переменную, которую я использую для вызова SQL-запроса, проблема, с которой я сталкиваюсь, заключается в том, что я хочу изменить переменную, чтобы я не использовал вызов SELECT каждый раз, а вместо этого вызывал AND . Как создать такую функцию? Это то, что у меня сейчас есть.

 if ($_GET['filtering2'] != "" || $_GET['filtering3'] != "" || $_GET['filtering4'] != "" || $_GET['filtering5'] != "" || $_GET['filtering6'] != "" || $_GET['filtering7'] != "" || $_GET['filtering7'] != "") {

    function searchByColumn($values, $columnName)
    {
        $string = implode(" OR season LIKE ", $values);
        if ($firstTime = 2) {

            return "SELECT * FROM shrubs2 WHERE season LIKE $string";

        } else {
            return " AND WHERE season LIKE $string";
        }
    }

    $colNames = array("season"); // can add here more column names
    foreach ($colNames as $colName) {
        $str .= searchByColumn($array_name, $colName);
        $firstTime = 3;
    }
}
if ($_GET['filtering8'] != "" || $_GET['filtering9'] != "" || $_GET['filtering10'] != "" || $_GET['filtering11'] != "") {

    function searchByColumn2($values, $columnName2)
    {
        $string2 = implode(" OR 日照 LIKE ", $values);
        if ($firstTime = 2) {
            return "SELECT * FROM shrubs2 WHERE 日照 LIKE $string2";

        } else {
            return " AND WHERE 日照 LIKE $string2";
        }
    }

    $colNames2 = array("日照"); // can add here more column names
    foreach ($colNames2 as $colName2) {
        $str .= searchByColumn2($array_name2, $colName2);
        $firstTime = 3;
    }

}
  

Я пытался изменить переменную $firstTime, но это никогда не приводило к тому, чего я хотел.

первое редактирование:

 if($_GET['filtering8'] != "" || $_GET['filtering9'] != "" || $_GET['filtering10'] != "" || $_GET['filtering11'] != "" ){

function searchByColumn2($values, $columnName2) {
  $string2 = implode(" OR 日照 LIKE ", $values);
  if($firstTime != 3){
  return "SELECT * FROM shrubs2 WHERE 日照 LIKE $string2";
  $firstTime = 3;
} else{
  return " AND WHERE 日照 LIKE $string2";
}
}


$colNames2 = array("日照"); // can add here more column names
foreach($colNames2 as $colName2) {
$str .= searchByColumn2($array_name2, $colName2);

}

}
  

и, конечно, я добавил:
глобальный $firstTime;

Комментарии:

1. Где вы определяете $array_name , $array_name2 и $str ?

Ответ №1:

поскольку переменная является глобальной, вам необходимо определить глобальную, добавив

 global $firstTime;
  

в первой строке searchByColumn searchByColumn2 функции and . это будет ссылаться на глобальную переменную $firstTime

Комментарии:

1. итак, я должен определить глобальный $firstTime; а затем. установите значение, как обычно?

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

3. Я имею в виду, как это function searchByColumn($values, $columnName) { global $firstTime; $string = implode(" OR season LIKE ", $values); if ($firstTime = 2) { return "SELECT * FROM shrubs2 WHERE season LIKE $string"; } else { return " AND WHERE season LIKE $string"; } }