Привет у меня есть форма с 6 полями:PDO запрос в зависимости от того, что входы будут завершены
Age1
Age2
Client type
Destination
Score1
Score2
Я хочу, чтобы создать запрос на основе того, какие поля будут завершены, и я не знаю, как создать один только путем создания для каждой возможности запроса. Эти поля формы представляют собой столбцы в моей базе данных из 2 таблиц.
$age1=$_POST['age1'];
$age2=$_POST['age2'];
$score1=$_POST['score1'];
$score2=$_POST['score2'];
$destination=$_POST['destionation'];
$client_type=$_POST['client_type'];
if ($age1!='' and $age2!='')
{
$age_sql=" where TIMESTAMPDIFF(year, Bday,CURDATE())>=$age1 and TIMESTAMPDIFF(year, Bday,CURDATE())<=$age2";
}
if ($destination!='')
{
$dest_sql='Inner Join Leg_Client_Destinatie
where Leg_Client_Destinatie.Destinatie="'.$destinatie.'"
and Leg_Client_Destinatie.ID=Persoane.ID';
}
$stmt = $dbh->prepare("SELECT * from Persoane $dest_sql $varsta_sql");
$stmt->execute();
while ($row = $stmt->fetch())
{
}
но это нехорошее решение для каждой возможности, потому что может быть много комбинаций. У любого из вас есть другая идея?
Это все, что вы можете сделать: динамически строить свою строку запроса на основе того, что выбрано пользователем. иначе вы застряли в написании невероятно уродливых/огромных запросов, содержащих логику для обработки ВСЕ возможных комбинаций опций. –
ok, но проверьте мой пример, скажем, у меня есть место назначения и возраст, но в возрасте sql мне нужно 'и' вместо 'where', потому что я использую' where' on '$ dest_sql' – user3463807
yes. если вы строите запрос динамически, то вам нужно убедиться, что вы создаете синтаксически VALID-запрос. –