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

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

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

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

PHP

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

Q&A

解決済

1回答

650閲覧

mysqlへの接続ができない

rikuo_777

総合スコア4

MySQL

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

PHP

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

0グッド

0クリップ

投稿2023/04/24 02:53

実現したいこと

お問い合わせフォームの入力内容をmysqlのデータベースに登録する。

ご回答いただけると幸いです。

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

PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\phpstudy\inquiry.php:270 Stack trace: #0 C:\xampp\htdocs\phpstudy\inquiry.php(270): PDOStatement->execute() #1 {main} Fatal error: Uncaught Error: データ登録に失敗しました in C:\xampp\htdocs\phpstudy\inquiry.php:276 Stack trace: #0 {main} thrown in C:\xampp\htdocs\phpstudy\inquiry.php on line 276

該当のソースコード

php

1<?php 2$name=filter_input(INPUT_POST,'name'); 3$mail=filter_input(INPUT_POST,'mail'); 4$gender=filter_input(INPUT_POST,'gender'); 5$age=filter_input(INPUT_POST,'age'); 6$contact=filter_input(INPUT_POST,'contact'); 7 8$sql = <<<SQL 9 INSERT INTO `kanri` (`name`, `mail`, `gender`,`age`,`contact`) 10 VALUES (:name, :mail, :gender,:age,:contact); 11SQL; 12 13try { 14 $db = new PDO('mysql:dbname=cms;host=localhost;charset=utf8','root','pass'); 15 $preparedStatement = $db->prepare($sql); 16 $preparedStatement->bindValue(":name", $name, PDO::PARAM_STR); 17 $preparedStatement->bindValue(":mail", $mail, PDO::PARAM_STR); 18 $preparedStatement->bindValue(":gender", $gender, PDO::PARAM_STR); 19 $preparedStatement->bindValue(":age", $age, PDO::PARAM_STR); 20 $preparedStatement->bindValue(":coontact", $contact, PDO::PARAM_STR); 21 22 $result = $preparedStatement->execute(); 23 echo $result; 24 $db = null; 25}catch(Exception $e){ 26 // エラー表示 27 echo $e; 28 throw new Error("データ登録に失敗しました"); 29} 30?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラー内容からすると接続できてないわけではなくSQL実行の際に失敗しています。
エラー内容をよく読んでみましょう。
SQLにセットしたパラメータと送られたパラメータ(の数)が合ってない旨が指摘されています。

SQLにセットされたパラメータ :contact
バインドされたパラメータ名 :coontact

固有名詞などは基本、コピペしましょう。

投稿2023/04/24 02:55

編集2023/05/01 19:17
m.ts10806

総合スコア80873

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

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

m.ts10806

2023/04/24 02:57 編集

あとExceptionは文字列じゃないのでechoでは何も出ないはず。 エラーメッセージを保持するフィールドにアクセスするか(ドキュメント確認して)、var_dumpで出力を。 PDO接続設定的にもちゃんとエラー内容キャッチしてないかもしれないので、オプション確認してください
rikuo_777

2023/04/24 03:41

ありがとうございました!
m.ts10806

2023/04/24 03:56

補足コメントもあるので確認しておいてください。 今後同様の間違いを起こさないための対策にもなります。
rikuo_777

2023/04/24 05:39

こちらで申し訳ございません。 「PDO接続設定的にもちゃんとエラー内容キャッチしてないかもしれないので、オプション確認してください」 これの確認方法を調べたのですがわかりませんでしたのでご教示いただくことは可能でしょうか。
rikuo_777

2023/04/24 05:47

本当にご丁寧なご対応ありがとうございます。 初めて2週間なので的を外れている質問をよくすることがあると思いますが、またご機会があればよろしくお願いします。
m.ts10806

2023/04/24 06:02

PHPマニュアルで機能確認する癖をつけると良いと思います。 個人記事や参考書籍はたまに間違ってることがあるので(あとバージョン含めた環境の違いも気にすべきですね)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.42%

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

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

質問する

関連した質問