前提・実現したいこと
プルダウンメニューから選択した「月」と合致するデータをDBから引っ張りたいです。
そのため、以下の関数を用意しました。
(プルダウンメニューから選択した「月」は、$_POST['month-selected'] になります。)
該当のソースコード
PHP
1if(!empty($_POST['month-selected'])){ 2 $_SESSION['month-selected'] = $_POST['month-selected']; 3 function getDateFromDB(){ 4 try{ 5 $dbh = dbConnect(); 6 $sql = 'SELECT date, menu FROM menu 7 WHERE (DATE_FORMAT(date, "%m") = ":month_selected") 8 '; 9 $data = array(':month_selected' => $_SESSION['month-selected']); 10 $stmt = queryPost($dbh, $sql, $data); 11 $result = $stmt->fetchAll(); 12 debug('SQL文の結果表示:'.print_r($result, true)); 13 if (empty($result)){ 14 debug('一致する結果はありません'); 15 }else{ 16 debug('一致する結果はあります'); 17 return $result; 18 } 19 }catch (Exception $e){ 20 error_log('エラー表示:'.$e->getMessage()); 21 debug('データベースに接続できませんでした'); 22 } 23 } 24}
上記関数内で使用しているqueryPost()は以下の通りです。
PHP
1function queryPost($dbh, $sql, $data){ 2 $stmt = $dbh->prepare($sql); 3 if(!$stmt->execute($data)){ 4 debug('クエリに失敗しました'); 5 debug('失敗したSQL:'.print_r($stmt, true)); 6 $err_msg['common'] = MSG07; 7 return 0; 8 }else{ 9 debug('DBには接続できました'); 10 return $stmt; 11 } 12 }
HTML
1<select name="month-selected"> 2 <option>選択してください</option> 3 <?php $month = array(1,2,3,4,5,6,7,8,9,10,11,12); 4 foreach ($month as $key){ ;?> 5 <option value="<?php echo printf("%02d", $key); ?>"><?php echo $key; ?></option> 6 <?php 7 }; 8 ?> 9</select>
以上の関数を実行すると、デバッグに「一致する結果はありません」と出てしまいます。
試したこと
具体的な数値を入れたとき、きちんと該当のデータを引っ張ってこれることを確認しました。
PHP
1$sql = 'SELECT date, menu FROM menu 2 WHERE (DATE_FORMAT(date, "%m") = 7) 3 ';
どこを修正すれば良いのか、アドバイスいただけたら大変有難いです。