2016-08-22 39 views
-1

我有一個HTML輸入型月份,像使用HTML輸入型月份的值在mysql的where子句

<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/)中很簡單en/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