我有一個HTML輸入型月份,像使用HTML輸入型月份的值在mysql的where子句
<input name="month" type="month" />
查詢
$bywherecls="WHERE DATE_FORMAT(fromdate, '%Y %m') = '".$_GET['month']."'";
的$_GET['month']
值就像是2016-08
是什麼上面的查詢錯誤?
我有一個HTML輸入型月份,像使用HTML輸入型月份的值在mysql的where子句
<input name="month" type="month" />
查詢
$bywherecls="WHERE DATE_FORMAT(fromdate, '%Y %m') = '".$_GET['month']."'";
的$_GET['month']
值就像是2016-08
是什麼上面的查詢錯誤?
您的格式應該是%Y-%m
而不是%y %m
。
使用您當前的代碼,您正在檢查WHERE 'YYYY MM' = '2016-08'
,這將永遠不會返回任何結果。
$bywherecls="WHERE DATE_FORMAT(fromdate, '%Y-%m') = '".$_GET['month']."'";
你不應該直接從用戶到數據庫中發送數據。使用一些escape函數或使用prepared statements。
請問你能更精確地修復這個問題嗎? 類型「月」將返回2016-08,因爲它是行爲。 – ssbb
**警告**:這有一些嚴重的[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