У меня есть форма с тремя параметрами поиска.Поиск по Sql, который позволяет использовать невыбранные параметры
SELECT users.* FROM users WHERE users.genre = ? AND users.country = ? AND users.city = ?
Этот запрос возвращает только результат, если все три критерия удовлетворяются
SELECT users.* FROM users WHERE users.genre = ? OR users.country = ? OR users.city = ?
этот запрос возвращает только результат, если только один критерий правильно встретил
Что мне нужно, так это:
Если кто-то подает «Австралию» для страны и оставляет жанр и пустое место, они получают все результаты для Австралии.
(city=Australia&genre=&country=)
Если кто-то утверждает, «Австралия» для страны и «рок» для жанра и оставляет пустым они получают все результаты для Австралии и «рок».
(city=Australia&genre=&rockcountry=)
на данный момент, если я оставляю пустое значение в форме, оно не дает мне никаких результатов, поскольку я думаю, что он ищет MySQL для пустых ячеек?
Thanx
<php
$Recordset1 = new WA_MySQLi_RS("Recordset1",$alpha,1);
$Recordset1->setQuery("SELECT users.* FROM users WHERE users.genre = ? AND users.country = ? AND users.city = ?");
$Recordset1->bindParam("s", "".((isset($_POST["genre"]))?$_POST["genre"]:"") ."", "-1"); //WAQB_Param1
$Recordset1->bindParam("s", "".((isset($_POST["country"]))?$_POST["country"]:"") ."", "-1"); //WAQB_Param2
$Recordset1->bindParam("s", "".((isset($_POST["city"]))?$_POST["city"]:"") ."", "-1"); //WAQB_Param3
$Recordset1->execute();
?>
думал, что это может работать
<?php
if ((isset($_POST["country"]) && $_POST["country"] != ''))
{?>
<?php
$Recordset1 = new WA_MySQLi_RS("Recordset1",$alpha,1);
$Recordset1->setQuery("SELECT users.* FROM users WHERE users.country = ?");
$Recordset1->bindParam("s", "".((isset($_POST["country"]))?$_POST["country"]:"") ."", "-1"); //WAQB_Param2
$Recordset1->execute();
?>
<?php } ?>
<?php
if ((isset($_POST["country"]) && $_POST["country"] != '') && (isset($_POST["city"]) && $_POST["city"] != ''))
{?>
<?php
$Recordset1 = new WA_MySQLi_RS("Recordset1",$alpha,1);
$Recordset1->setQuery("SELECT users.* FROM users WHERE users.genre = ? AND users.country = ? AND users.city = ?");
$Recordset1->bindParam("s", "".((isset($_POST["country"]))?$_POST["country"]:"") ."", "-1"); //WAQB_Param2
$Recordset1->bindParam("s", "".((isset($_POST["city"]))?$_POST["city"]:"") ."", "-1"); //WAQB_Param3
$Recordset1->execute();
?>
<?php } ?>
<?php
if ((isset($_POST["country"]) && $_POST["country"] != '') && (isset($_POST["city"]) && $_POST["city"] != '') && (isset($_POST["genre"]) && $_POST["genre"] != ''))
{?>
<?php
$Recordset1 = new WA_MySQLi_RS("Recordset1",$alpha,1);
$Recordset1->setQuery("SELECT users.* FROM users WHERE users.genre = ? AND users.country = ? AND users.city = ?");
$Recordset1->bindParam("s", "".((isset($_POST["genre"]))?$_POST["genre"]:"") ."", "-1"); //WAQB_Param1
$Recordset1->bindParam("s", "".((isset($_POST["country"]))?$_POST["country"]:"") ."", "-1"); //WAQB_Param2
$Recordset1->bindParam("s", "".((isset($_POST["city"]))?$_POST["city"]:"") ."", "-1"); //WAQB_Param3
$Recordset1->execute();
?>
<?php } ?>
, но его очень подробный и не охватывает все параметры поиска, например, если пользователь выбирает страну и жанр, он не рассматривается выше, если я не пишу код для каждого конкретного поиска.
Можете ли вы попытаться установить значение NULL, если не найдено в queryString. А также использовать функцию TRIM для поиска лучшего результата –