В настоящее время принимает все запросы на получение через функцию 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
Добавил еще немного контекста, надеюсь, это поможет
mysqli
и ЗОП, где любые пользовательские данные указываются с помощью индикатора ?
или :name
, который позже заполняется с помощью bind_param
или execute
в зависимости от того, какой из них вы используете.
Вы можете определить функция для поиска каждого столбца:
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.
query I get is SELECT * FROM shrubs2 WHERE 日照 LIKE '%夏%' OR 日照 LIKE '%秋%' OR 日照 LIKE '%半日陰%'
@dddddddooooosss - Обратите внимание, что вы echo
$str
вне цикла foreach
- вам нужно повторить / запустить его внутри цикла. Мой пост решил вашу проблему?
привет и добро пожаловать в SO. непонятно в чем ваш вопрос? Прочтите Как спросить