- 締切済み
PHPで期間指定の実装
PHPで期間指定の検索機能を実装しています。var_dump($year)で値は取り出せていますが、SQL文の部分が分かりません。SQL文の部分をどのように修正すればいいですか? テーブルの構造は以下の通りです。 (timecardテーブル :id、 begin、 finish 、date ) (userテーブル :user_id、user_name、password) if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['year'])) { $year = filter_input(INPUT_POST, 'year'); try { // 該当する日付をSELECT文で検索する $sql = 'SELECT * FROM timecard WHERE date = ?'; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $year, PDO::PARAM_STR); $stmt->execute(); //全て取得するのでfetchALLでレコードを取得する $result = $stmt->fetchALL(); // phpmyadminには、2021-10-03の形式で保存されているので、2021の部分だけを抽出して$yearと比較する。 if(count($result) > 0 && $year === substr($result['date'], 0, 4)) { $msg[] = ('指定の出退勤の記録は以下の通りです。'); }else { $err_msg[] = ('指定の出退勤の記録はありません。'); } } catch (PDOException $e) { $err_msg[] = '出退勤の記録を取得できませんでした。'; } } } <div class="search"> <form method="post"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> <input type="hidden" name="year" value="<?php $year;?>"> <select name="year">'.<?php echo $year;?> .'</select> <input type="submit" value="検索する"> </form> </div>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- dell_OK
- ベストアンサー率13% (776/5751)
- dell_OK
- ベストアンサー率13% (776/5751)
- hogehoge78
- ベストアンサー率80% (433/539)
- hogehoge78
- ベストアンサー率80% (433/539)
補足
phpmyadminには、2021-10-03の形式で保存されているので、「2021の部分だけを抽出し、$yearと一致するものを検索」します。 $sql = 'SELECT date FROM timecard WHERE SUBSTRING(date, 0, 4) = $year'; のように、dateの年の部分と$yearを比較できるようにしたいです。