質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

受付中

SQLSTATE[42000]: Syntax error or access violation: 1064 のエラーの解決方法を教えていただきたいです。

tekuteku0987
tekuteku0987

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0リアクション

1クリップ

216閲覧

投稿2022/08/13 14:37

今起きている問題

phpを使ってシフトの管理システムを作っています。その途中で、

SQLSTATE[42000]: Syntax error or access violation: 1064You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''2022/09/10, 2022/09/15, 2022/09/21)' at line 2

というエラーに直面しました。これを解決したいです。

該当のソースコード

html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>cooking_staff_form</title> <link rel="stylesheet" href="../css/main.css"> <meta charset="utf-8"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <!--jQuery UI JS--> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <!--jquery UI japanese--> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script> <!--jQuery UI CSS--> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.min.css"> <!--jQuery UI multi--> <script src="https://cdn.rawgit.com/dubrox/Multiple-Dates-Picker-for-jQuery-UI/master/jquery-ui.multidatespicker.js"></script> <script type = "text/javascript"> $(function() { $('#data_picker').multiDatesPicker({ numberOfMonths: [2,1], maxPicks: 31, }); }); </script> </head> <body> <section class = "cooking_staff_form wrapper"> <form action="http://localhost:3000/shift_management_calender\php\send_staffinfo.php" method="post"> <div class = "cooking_staff_info"> <dl> <div class = "input_name"> <h2 class = "sec_title"><p>名前を入力してください</p></h2> <dd> <input type="text" name = "staff_name"> </dd> </div> <div class = "cuisine_table"> <div class = "content_box"> <h2 class = "sec_title"><p>あなたができる料理名を選択してください</p></h2> <div class = "flex"> <div> <dd><input type = "checkbox" name="cuisine[]" value = "オムライス">オムライス</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "明太子パスタ">明太子パスタ</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "たこ焼き">たこ焼き</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "お好み焼き">お好み焼き</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "クレープ">クレープ</input></dd> </div> <div> <dd><input type = "checkbox" name="cuisine[]" value = "オムレツ">オムレツ</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "野菜ランチ">野菜ランチ</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "スイカアイス">スイカアイス</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "豚骨ラーメン">豚骨ラーメン</input></dd> <dd><input type = "checkbox" name="cuisine[]" value = "ハンバーグ">ハンバーグ</input></dd> </div> </div> </div> </div> <div class = "get_cooking_staff_day"> <h2 class="sec_title"><p>来月あなたの入れるシフト日を教えてください</p></h2> <input type="text" id = "data_picker" name="send_available_day"></input> <div class = "submit_box"> <input type="submit" value = "送信する"></input> </div> </div> </dl> </div> </form> </section> </body> </html>

php

<?php //データベース接続のための情報を先に格納しておく $dsn="mysql:host=localhost;dbname=shift_info;charset=utf8"; $user="root"; $pass="growry1293"; if((isset($_POST['staff_name']) && isset($_POST['cuisine'])) && isset($_POST['send_available_day'])){ //名前とできる料理、シフトは入れる日が送信されたらデータを格納する //送られてきた名前を変数$nameに格納// $staff_name=htmlspecialchars($_POST["staff_name"],ENT_QUOTES); //送られてきた料理可能な料理名を変数$cuisinesに格納 $cuisines=$_POST["cuisine"]; $cuisines_csv=implode(',', $cuisines); //送られてきたシフト入れる日を変数$available_dayに格納 $available_days=$_POST["send_available_day"]; try{ //データベースに接続 $db = new PDO($dsn,$user,$pass); //cooking_staff_infoのテーブルに情報を格納していく $db->query("INSERT INTO cooking_staff_info (staff_name,available_cuisine,send_available_day) VALUES ('$staff_name','$cuisines_csv','$available_days)"); }catch (Exception $e) { echo $e->getMessage() . PHP_EOL; } header("http://localhost:3000/shift_info/send_staffinfo.php"); //"reservation_calender.php(予約フォームがあったページ)"に戻る exit; } //開発者用:もしデータが送信されていなかったらエラーを表示する。 else{ print_r(" データの送信漏れがあります"); } function get_cooking_staff_info_by_db(){ //データベース接続のための情報を先に格納しておく $dsn="mysql:host=localhost;dbname=shift_info;charset=utf8"; $user="root"; $pass="growry1293"; //データベース接続 $db = new PDO($dsn,$user,$pass); //$psにcooking_staff_infoのテーブル情報を格納する $ps = $db->query("SELECT * FROM cooking_staff_info"); //調理スタッフの情報を入れる配列を用意する $cooking_staff_info_all = array(); foreach($ps as $out){ //それぞれcooking_staff_infoのテーブルから引き出した情報を変数に格納する $name_out = $out['staff_name']; $cuisines_out = $out['available_cuisine']; $available_day_out = $out['send_available_day']; //調理スタッフの情報が入っている$cooking_staff_info変数にスタッフ名があったのなら if(array_key_exists($name_out, $cooking_staff_info_all)){ //名前、調理可能な料理名、入れるシフト日を配列$cooking_staff_infoに入れる。 array_push($cooking_staff_info_all[],$name_out, $cuisines_out,$available_day_out); }else{ $cooking_staff_info_all = [$name_out,$cuisines_out,$available_day_out]; } } //調理スタッフの情報が入った変数を返す。 return $cooking_staff_info_all; } get_cooking_staff_info_by_db(); ?>

試したこと

接続先のDB名やテーブル名が書き間違っているのかと思い確認しましたが、問題はありませんでした。いろいろと調べてみたのですが、いまいちよくわからず質問いたしました。お忙しいところ恐縮ですが、質問に回答していただけましたらありがたいです。

補足情報

データベースはmysqlを使っています。
xamppを使用しています。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。