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

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

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

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

Q&A

解決済

2回答

949閲覧

PHPでデータベースに入力ホームの内容を保存できない

rrr.---

総合スコア2

PHP

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

0グッド

0クリップ

投稿2020/09/29 08:03

編集2020/10/02 08:28

前提・実現したいこと

PHPでデータベースに入力フォームからの内容を保存しようとした際、
下記のエラーコードが出てしまいました。

発生している問題・エラーメッセージ

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 'INSERT_INTO recipes (recipe_name, category, difficulty, budget, howto) VALUES (?' at line 1```

PHP

1$recipe_name = $_POST['recipe_name']; 2$category = (int) $_POST['category']; 3$difficulty = (int) $_POST['difficulty']; 4$budget = (int) $_POST['budget']; 5$howto = $_POST['howto']; 6try { 7 $dbh = new PDO('mysql:host=localhost;dbname=db1;charset=utf8', $user, $pass); 8 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 9 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 10 $sql = "INSERT_INTO recipes (recipe_name, category, difficulty, budget, howto) VALUES (?, ?, ?, ?, ?)"; 11 $stmt = $dbh->prepare($sql); 12 $stmt->bindValues(1, $recipe_name, PDO::PARAM_STR); 13 $stmt->bindValues(2, $category, PDO::PARAM_INT); 14 $stmt->bindValues(3, $difficulty, PDO::PARAM_INT); 15 $stmt->bindValues(4, $budget, PDO::PARAM_INT); 16 $stmt->bindValues(5, $howto, PDO::PARAM_STR); 17 $stmt->execute(); 18 $dbh = null; 19 echo "レシピの登録が完了しました。"; 20} catch (Exception $e) { 21 echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; 22 die(); 23}

試したこと

ソースコードに間違いがないか、教本をもとに数回見直しました。
エラー内容が、構文エラーまたはアクセス違反と出ているため、
それらについて調べてみましたが、回答結果を得られませんでした。

補足情報(FW/ツールのバージョンなど)

PHP/7.4.2

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/29 08:06

formなのでホームではなくフォームかと。 あとコードはマークダウンのcode機能を利用してご提示ください
guest

回答2

0

ベストアンサー

"INSERT_INTO" ```"_"が入る構文を初めてみましたが、いらないと思います。 あとマークダウンしてないので分かりませんが、インデントは揃えた方が良いです。

投稿2020/09/29 08:18

cacao86

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rrr.---

2020/10/01 05:54

"_"をなくして、"INSERT INTO"としたところ、解決しました! ありがとうございました。
guest

0

エラー内容が、構文エラーまたはアクセス違反と出ているため、

「Syntax error」とでていて、実行されたコードが引用されている場合は構文エラーです。
また、SQLSTATEで始まっているので、PHPがException拾ってMySQLにてSQL処理上で出たエラーです。

MySQLはPHPからすると外部の仕組みです。
直接MySQLで実行して想定の結果を得られなければ当然PHPからも想定の結果を得られません。
パラメータにしている部分を固定の、画面から渡される想定の情報を仮に入れて直接実行し、想定の結果を得られてからPHPから実行するようにしてください。

ソースコードに間違いがないか、教本をもとに数回見直しました。

教本を写すことではなくコードとして正しいか成り立っているかを観点としてください。
でないと、機能や構文を正しく説明しているドキュメントやマニュアルに目が向きません。

※書籍が間違っている可能性もないわけではなく、その場合は出版元へ問い合わせたり、別途出ているかもしれない正誤表を確認することになります

投稿2020/09/29 08:16

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問