予約フォームで以下のような仕組みを作っています。
1日あたりの予約可能上限枠:10名(午前、午後それぞれ)
あらかじめ、残り空き枠数カラムavailable_numのデフォルト値を10にしておき、
予約が入るたびにそこから0になるまで減算し値を更新する
上記のような動きにしたいのですが、エラーになってしまいます。
試しに、PHPのヒアドキュメント内で以下のようなクエリにしてみました。
sql
155 UPDATE reserv_info 256 SET available_num -= $_SESSION['adult_member'] 357 WHERE slot = $_SESSION['slot'] 458 GROUP BY reserved_date 5 ;
- reserv_info = テーブル名
- available_num = デフォルト値で10が入っています
- $_SESSION['adult_member'] = 入力された予約人数
- slot = 午前の部or午後の部
- reserved_date = 予約希望日
以下のエラーとなりました。
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /中略/reserved.php on line 56
デフォルト値を数式で更新することはできないのでしょうか。
または内容に誤りがありますか。
他の方法も含めてご教示くださると助かります。
以下に修正てみましたが、結果は同じエラーでした。
sql
1 UPDATE reserv_info 2 SET available_num = available_num - $_SESSION['adult_member'] 3 WHERE slot = $_SESSION['slot'] 4 AND reserved_date = $reserved_date
- $reserved_date = 予約希望日
エラー内容
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /中略/reserved.php on line 56
以下のように修正しましたら、解決しました。
sql
1 UPDATE reserv_info 2 SET available_num = available_num - $_SESSION[adult_member] 3 WHERE slot = '$_SESSION[slot]' 4 AND reserved_date = '$reserved_date' 5 ;
① $_SESSION[adult_member] = 数値型
② '$_SESSION[slot]' = 文字列型
③ '$reserved_date' = 日付型
②③の変数はクォーテーションで囲うべきでした。
また①は[]内のクォーテーションを外しました。
残り空き枠数のデフォルト値も、予約が入るたびにきちんと減算されています。
テーブルを分けようとも思いましたが、このまま進めてみます。
アドバイス下さった方々、どうもありがとうございました。
回答3件
あなたの回答
tips
プレビュー