###phpを使って日付の範囲検索を行いたいです。
php(FWなし)で、日付の範囲検索を実装しております。
var_dump($day)で値は取り出せるのですが、範囲内のデータが取り出せません。
###ソースコード
php
1 2if ($_SERVER['REQUEST_METHOD'] === 'POST') { 3 4 if (!empty(filter_input(INPUT_POST, 'day'))) { 5 $day = filter_input(INPUT_POST, 'day'); 6 $dayAfter = filter_input(INPUT_POST, 'dayAfter'); 7 try { 8 $pdo = new PDO('mysql:host=localhost;dbname=test_db;charset=utf8', 'root', 'password'); 9 $sql = "SELECT name FROM news WHERE day BETWEEN :day AND :dayAfter "; 10 var_dump($day); 11 var_dump($dayAfter); 12 //ここで範囲指定したい値は取得できています。 13 $stmt = $pdo->prepare('SELECT * FROM news WHERE day BETWEEN :day AND :dayAfter'); 14 $stmt->bindParam(':day', $day); 15 //恥ずかしながら上記の記述が分かりません。マニュアルでは「PHP 変数を SQL 文のパラメータにバインドする」とありますが、変数$dayをdbのdayカラムにバインドする(つなげる)ということでしょうか? 16 $stmt->execute(); 17 $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 18 } catch (PDOException $exception) { 19 echo $exception->getMessage(); 20 exit(); 21 } 22 } 23} 24
そして$dayと$dayAfterの値をこちらのソースコードから挿入しています。
php
1 2<div class="day"> 3 <form action='' method='post'> 4 <select name="year1"> 5 <option value="">--</option> 6 <?php foreach(range(1920,2016) as $year): ?> 7 <option value="<?=$year?>"><?=$year?></option> 8 <?php endforeach; ?> 9 </select> 10 <select name="month1"> 11 <option value="">--</option> 12 <?php foreach(range(1,12) as $month): ?> 13 <option value="<?=str_pad($month,2,0,STR_PAD_LEFT)?>"><?=$month?></option> 14 <?php endforeach; ?> 15 </select> 16 <select name="date1"> 17 <option value="">--</option> 18 <?php foreach(range(1,31) as $day): ?> 19 <option value="<?=str_pad($day,2,0,STR_PAD_LEFT)?>"><?=$day?></option> 20 <?php endforeach; ?> 21 </select> 22 23 <select name="year"> 24 <option value="">--</option> 25 <?php foreach(range(1920,2016) as $year): ?> 26 <option value="<?=$year?>"><?=$year?></option> 27 <?php endforeach; ?> 28 </select> 29 <select name="month"> 30 <option value="">--</option> 31 <?php foreach(range(1,12) as $month): ?> 32 <option value="<?=str_pad($month,2,0,STR_PAD_LEFT)?>"><?=$month?></option> 33 <?php endforeach; ?> 34 </select> 35 <select name="date"> 36 <option value="">--</option> 37 <?php foreach(range(1,31) as $day): ?> 38 <option value="<?=str_pad($day,2,0,STR_PAD_LEFT)?>"><?=$day?></option> 39 <?php endforeach; ?> 40 </select> 41 <input type="hidden" name="day" value="<?php echo $_POST['year1'].'-'. $_POST['month1'].'-'. $_POST['date1']; ?>"> 42 <input type="hidden" name="dayAfter" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> 43 <input type="submit" value="検索"> 44 </form> 45 </div>
こちら使って値を入力しております。
値の入力→値を使って範囲指定→指定した範囲の値を表示
この流れの中の「値を使って範囲指定」
が上手くいきません。
###行ったこと
1.var_dumpdで値の確認
2.dayのデータ型をdateに変更
###バージョンやFW
FWは使っていません。
phpのバージョンは7.1
どうか、お願い致します。
回答1件
あなたの回答
tips
プレビュー