いつもお世話になっております。
標題について、$dateには0~8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySQLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はSQLで可能でしょうか。データ個数だけクエリを実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
php
1function search_from_date($dbh, $date){ 2 if (!empty($date)){ 3 $cnt1 = count($date); 4 } 5 6 $active_days_str = get_active_days_str(); 7 $cnt2 = count($active_days_str); 8 if (empty($cnt1)||$cnt1 == $cnt2){ 9 $sql = <<<SQL 10 SELECT `id` 11 FROM `schedule` 12SQL; 13 $stmt = $dbh->prepare($sql); 14 if($stmt->execute()){ 15 $teacher_id = $stmt->fetchAll(); 16 return $teacher_id; 17 }else{ 18 return FALSE; 19 } 20 }else{ 21// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…! 22 } 23}
仮想配列$dateから複数のカラム名を参照し、1が入ったidをOR検索したいです。
spl
1CREATE TABLE `schedule` ( `id` varchar(20) NOT NULL, `2018-09-23` int(1) DEFAULT NULL, `2018-09-22` int(1) DEFAULT NULL, `2018-09-16` int(1) DEFAULT NULL, `2018-09-15` int(1) DEFAULT NULL, `2018-09-09` int(1) DEFAULT NULL, `2018-09-08` int(1) DEFAULT NULL, `2018-09-02` int(1) DEFAULT NULL, `2018-09-01` int(1) DEFAULT NULL ) 2INSERT INTO `schedule` (`id`, `2018-09-23`, `2018-09-22`, `2018-09-16`, `2018-09-15`, `2018-09-09`, `2018-09-08`, `2018-09-02`, `2018-09-01`) VALUES ('honda', NULL, 1, 1, 1, 1, 1, 1, 0)
回答2件
あなたの回答
tips
プレビュー