2.3日前はエラーが出ずに動いていましたが、今日動かすとこのようなエラーが出てしまいました。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in C:\eclipse-php\xampp\htdocs\kenkyuu\schedule.php on line 60
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 in C:\eclipse-php\xampp\htdocs\kenkyuu\schedule.php on line 60
60行目の文は
PHP
1$reservations = $db->query('select * from reservation where year = '.$year.' and month = '.$month.'');
のようになっています。特に構文をいじったりしてないのになぜこのようなエラーが起きるのか分かりません。
よろしくお願い致します。
全体
PHP
1<!DOCTYPE html> 2<html><head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>スケジュール編集</title> 5<style> 6 .sun{color: red;} 7 .sat{color: blue;} 8 #content{ 9 padding: 20px; 10 width: 720px; 11 min-height: 490px; 12 margin: 0 auto; 13 margin-bottom: 10px; 14 font-size: 153.9%; 15} 16 17 18</style> 19</head> 20<body> 21 22<?php 23// require("nav_admin.php"); 24require("nav_user.php"); 25require('dbconnect.php'); 26 27 28$year = date('Y'); 29if(isset($_GET["month"])){ 30 $month = $_GET["month"]; 31 if(isset($_GET["year"])){ 32 $year = $_GET["year"]; 33 if(isset($_GET["btn"])){ 34 if($_GET["btn"] == 'next'){ 35 $month = $month+1; 36 if($month == 13){ 37 $month = 1; 38 $year = $year+1; 39 } 40 }elseif($_GET["btn"] == 'prev'){ 41 $month = $month-1; 42 if($month == 0){ 43 $month = 12; 44 $year = $year-1; 45 } 46 } 47 } 48 } 49 50} 51 52//linkでやる12月の次の処理、linkにyearを追加 53// else{ 54// $month = date('m'); 55// } 56// echo $month+1; 57// exit; 58 59 60$reservations = $db->query('select * from reservation where year = '.$year.' and month = '.$month.''); 61$monthly=[];//予定が空のときに処理 62while($reservation = $reservations->fetch()){ 63 $monthly[$reservation['day']][] = array($reservation['time1'],$reservation['time2'],$reservation['g_name']); 64} 65// ksort($monthly); 66// print_r($monthly); 67// exit; 68 69// 一か月分の日付を曜日付きで出力する 70$lastd = 31;//$yearと$monthから計算して求める 71$time = mktime(0, 0, 0, $month + 1, 0, $year); 72$lastd = date('d',$time); 73//時区間分割を実現する 74$divided=[]; 75for ($d=1; $d<= $lastd; $d++){ 76 if (array_key_exists($d, $monthly)){ 77 //配列のキーが存在するか調べる(キー、対象の配列) 78 //この日に予定があれば、分割していく 79 $intv = [[9,21,'']]; 80 foreach ($monthly[$d] as $yotei){//(対象配列 as その中身)、$yoteiは[x,y,z] 81 $intv= div($intv, $yotei); 82 } 83 $divided[$d] = $intv;//=[x,y,z] 84 }else{ 85 $divided[$d] = [[9,21,'']]; 86 } 87} 88 89//print_r($divided); 90//exit; 91echo '<div id="content">'; 92echo '<table border=1>'; 93echo '<h2>スケジュール編集</h2> '; 94echo '<ul class="nav nav-tabs" role="tablist"> 95 <li class="nav-item"> 96 <a class="nav-link active" id="item1-tab" data-toggle="tab" href="#item1" role="tab" aria-controls="item1" aria-selected="true">野球場</a> 97 </li> 98 <li class="nav-item"> 99 <a class="nav-link" id="item2-tab" data-toggle="tab" href="#item2" role="tab" aria-controls="item2" aria-selected="false">テニスコート</a> 100 </li> 101 </ul>'; 102echo "<h3>{$year}年{$month}月</h3>"; 103echo "<a class='btn btn-info' href='?year=$year&month=$month&btn=prev'>前月</a>"; 104echo "<a class='btn btn-info' href='#'>編集</a>"; 105echo "<a class='btn btn-info' href='#'>引き継ぐ</a>"; 106echo "<a class='btn btn-info' href='?year=$year&month=$month&btn=next'>次月</a>"; 107echo '<tr><td></td>'; 108for ($h=9; $h<22; $h++){ 109 echo '<td >', $h, '</td>'; 110} 111echo '</tr>'; 112for ($d=1; $d<=$lastd; $d++){ 113 $time = mktime(0, 0, 0, $month, $d, $year); 114 $w = date('w',$time); 115 $wdays = array('日','月','火','水','木','金','土',); 116 $class = ''; 117 if ($w==0) $class='sun'; 118 if ($w==6) $class='sat'; 119 echo '<tr>'; 120 echo '<td><span class="'.$class.'">', $d,'('. $wdays[$w].')</span>'. '</td>'; 121 $yotei = $divided[$d]; 122 foreach ($yotei as $y){//$yotei=$divided[$d]=[x,y,z] 123 $y1 = $y[0];//[x,y,z]のx 124 $y2 = $y[1];//[x,y,z]のy 125 $y3 = $y[2];//[x,y,z]のz 126 $colspan=$y2-$y1+1; 127 if(!empty($y3)){ 128 echo '<td colspan="'. $colspan . '"><a href="edit.php?t1='.$y1.'&t2='.$y2.'&gm='.$y3.'">'.$y3.'</a></td>'; 129 }else{ 130 echo '<td colspan="'. $colspan . '"><a href="reservation.php?y='.$year.'&m='.$month.'&d='.$d.'&w='.$wdays[$w].'&t1='.$y1.'&t2='.$y2.'">○</a></td>'; 131 } 132 133 } 134 echo '</tr>'; 135} 136echo '</table>'; 137echo '</div>'; 138?> 139</body> 140</html> 141<?php 142//div.phpからコピーしたもの 143 function div($intv, $a){ 144 // $a=[11,12,''] =(div)=> $intv=[[9,10,''],[11,12,'試合'],[13,21,'']] 145 $a1 = $a[0]; 146 $a2 = $a[1]; 147 $a3 = $a[2];//追加 148 $out = []; 149 for ($i=0; $i<count($intv); $i++){ 150 $b1 = $intv[$i][0]; 151 $b2 = $intv[$i][1]; 152 $b3 = $intv[$i][2];//追加 153 154 if ($a1 >= $b1 and $a2 <= $b2){ 155 if ($b1<=$a1-1) 156 $out[]=[$b1, $a1-1, $b3]; //$b3を追加 157 $out[]=[$a1, $a2, $a3]; //$a3を追加 158 if ($a2+1<=$b2) 159 $out[]=[$a2+1,$b2, $b3]; //$b3を追加 160 }else{ 161 $out[] = $intv[$i]; 162 } 163 } 164 return $out; 165 } 166?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/04 06:19