※ ChatGPTを利用し、要約された質問です(原文:日付型のデータを検索条件)
日付型のデータを検索条件
このQ&Aのポイント
DATE型でINSERTした日付データが検索条件として効きません。検索フォームに入力した日付に関係なく全てのレコードが出てしまいます。
検索フォームに設定された日付条件をPHPで処理していますが、条件を正しくSQL文に追加できているか確認しています。
日付型データの検索条件が正しく効くようにする方法について相談しています。
DATE型でINSERTした日付データが検索条件として効きません。
検索フォームに入力した日付に関係なく全てのレコードが出てしまいます。
以下、原因につきご教示いだけると幸いです、
◆検索フォームは、以下の通りです。
<html><body>
<form method="post" action="list.php">
<input type="text" name="date_more">以降
<input type="text" name="date_less">以前
</form>
</body></html>
◆PHPは、日付欄に2005-06-01のように値が入力された場合のみ
SQLに追加するようにしています。
//試験日 (値が入力されている場合のみSQL文に追加)
if (strlen($date_more) > 0) {
$sql .= " and (testdate >= $date_more)";
}
if (strlen($testdate_less) > 0) {
$sql .= " and (testdate <= $date_less)";
}
◆ $sqlをprintすると
select * from mytable where (memo like '%%') and (testdate >= 2005-06-01)
のように、SQL文はきちんと発行されているように思います。
よろしくお願い致します。
お礼
まったくご教示の通り、'でくくったら解決しました。 ありがとうございました。 「シリアル値として解釈される」という点をご指摘いただけた おかげで、今後同じ間違いをせずに済みそうです。 > 蛇足ながらSQL Injectionには気をつけて。 本件社内LANで共有するだけのデータベースなので 今回に限っては大丈夫だと思います。 とはいえ、これも言葉の意味すら知らず、調べて勉強になりました。