Мне нужно сделать запрос в MySQL. Но запрос нужно сделать динамически с параметрами, выбранными пользователем.Построение запроса с параметрами
Варианты День, Месяц, Год & SellerID.
Пользователь будет выбирать, хочет ли он просматривать историю продаж у продавцов по дням, месяцам и годам.
Но, допустим, он хочет видеть все продажи на March, 2012. Он оставит день в пустой и получить все продажи от 01 марта по 31 марта ...
А может быть, он оставляет возможность месяц в пустой, и установить день = 15 и Год = 2012 , он получит историю продаж с 2012 года и 15-го числа каждого месяца.
Моей программе необходимо создать запрос, который точно отражает то, что он хотел просмотреть.
Возникает вопрос:
ли мне действительно нужно использовать тысячи IF
на мой код? Разве нет лучшего способа сделать это?
if(($day==0) && ($month==0) && ($year>0)){
$query.="`date`>='{$year}-01-01' AND `date`<='{$year}-12-31'";
}elseif(($day==0) && ($month>0) && ($year>0)){
$query.="`date`>='{$year}-{$month}-01' AND `date`<='{$year}-{$month}-31'";
}elseif{
etc...
Я ценю, что у вас есть * некоторые * ошибка проверка. Однако я рекомендую вам рассмотреть [SQL Injection] (http://php.net/manual/en/security.database.sql-injection.php) и [Подготовленные утверждения] (http://php.net/manual/ о/mysqli.quickstart.prepared-statements.php). –
Итак, вы используете раскрывающийся список для каждого параметра? Не календарный виджет? Переосмысливая пользовательский интерфейс, некоторые могут сделать это проще. Sane по умолчанию и хороший интерфейс могут позволить вам то, что вы хотите, не имея необходимости писать столько логики на контроллере. – ficuscr
Спасибо за указание SQL-инъекций Джейсон, я знаю его существование, но моя система будет использоваться только для авторизованного персонала, и они не испортят свою собственную базу данных. – BernaMariano