2016-08-22 4 views
-1

У меня есть входной HTML тип месяц, какиспользуя значение HTML ввода типа месяц в MySQL, где положение

<input name="month" type="month" /> 

запроса

$bywherecls="WHERE DATE_FORMAT(fromdate, '%Y %m') = '".$_GET['month']."'"; 

значение $_GET['month'] подобно 2016-08

что неправильно с запросом выше?

+0

Вы можете быть более точным на предмет исправления, пожалуйста? тип «месяц» вернется 2016-08, так как это его поведение. – ssbb

+0

** ПРЕДУПРЕЖДЕНИЕ **: У этого есть некоторые серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/), потому что в запросе используются данные '$ _GET'. По возможности используйте ** подготовленные заявления **. Это довольно просто сделать в ['mysqli'] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [PDO] (http://php.net/manual/ ru/pdo.prepared-statements.php), где любые предоставленные пользователем данные указываются с индикатором '?' или ': name', который позже заполняется с помощью' bind_param' или 'execute' в зависимости от того, какой из них вы используете. – tadman

ответ

1

Ваш формат должен быть %Y-%m, а не %y %m.
С вашим текущим кодом вы проверяете WHERE 'YYYY MM' = '2016-08', который никогда не вернет никаких результатов.

$bywherecls="WHERE DATE_FORMAT(fromdate, '%Y-%m') = '".$_GET['month']."'"; 

И вы никогда не должны передавать данные непосредственно от пользователя к базе данных. используйте функцию escape или используйте prepared statements.

+0

где я использую '% y% m'? – Elyor

+0

В вашем запросе. Ответ обновлен. – Dekel

+0

Я вижу это, спасибо – Elyor

Смежные вопросы