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

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

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

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

PHP

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

Q&A

1回答

3384閲覧

Warning: PDOStatement::execute(): SQLSTATE[HY093]のエラー

DaikiYamada

総合スコア11

MySQL

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

PHP

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

0グッド

0クリップ

投稿2015/11/15 05:35

編集2022/01/12 10:55

イメージ説明どういうエラーなのでしょうか?
調べてもわかりません。。。

原因と解決策を教えてください。

【前提】
画像投稿掲示板をphp&mysqlで作っています。
posting.phpが投稿ページで、そのデータをthanks.phpで受け取り、画像等一覧を
index.phpとして表示したいです。
※今は仮としてthanks.phpに一覧を表示できるようしてます。

【エラー】
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/html/php_kadai/php_kadai09/thanks.php on line 16

データベースを見てもデータがinsertされていません・・・

<index.php>

<?php ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>画像投稿掲示板</title> <link rel="stylesheet" href="reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <h1>画像投稿掲示板</h1> <hr> <p class="posting"><a href="posting.php">画像を投稿する</a></p> <h2>投稿内容一覧</h2> </body> </html>

<posting.php>

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>画像投稿ページ</title> <link rel="stylesheet" href="reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <h1>画像投稿掲示板</h1> <hr> <form class="contents" action="thanks.php" method="post" enctype="multipart/form-data"> <table border="0" cellspacing="0" cellpadding="0" class="table_basic"> <colgroup> <col width="33%" /> <col width="67%" /> </colgroup> <tr> <th><span>投稿者</span><span class="must">必須</span></th> <td ><input type="text" name="name" value="" class="box"> </td> </tr> <tr> <th><span>画像タイトル</span><span class="must">必須</span></th> <td><input type="text" name="title" value="" class="box"></td> </tr> <tr> <th><span>画像ファイル</span><span class="must">必須</span></th> <td><input type="file" name="uploadfile" value="選択してください"><br><span class="attension">(※png, jpgのみ対応)</span></td> </tr> </table> <p class="button"><input type="submit" name="submit" value="投稿する" width="50px"></p> </form> <p class="link"><a href="index.php">画像一覧ヘージはこちら>></a></p> </body> </html>

<thanks.php>

<?php require_once('functions.php'); $name = $_POST['name']; $title = $_POST['title']; $dbh = connectDb(); $sql = "insert into posts (create_at, name, image_name, img_data) values (now(), :name, :title, :movetofile)"; $stmt = $dbh->prepare($sql); $stmt->bindParam(":name", $name); $stmt->bindParam(":title", $title); $stmt->bindParam(":movetofile", $movetofile); $stmt->execute(); //echo '成功しました'; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>投稿完了ページ</title> <link rel="stylesheet" href="reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <h1>画像投稿掲示板</h1> <hr> <div id="wrapper"> <p class="title">下記の内容で投稿致します</p> <p>投稿者: <?php if(empty($name)) :?> <?php echo "<p style='color:red;'>投稿者が入力されておりません。</p>"; ?> <?php else: ?> <?php echo h($name); ?> <?php endif; ?> </p> <p class="imagestitle">画像タイトル: <?php if(empty($title)) :?> <?php echo "<p style='color:red;'>画像タイトルが入力されておりません。</p>"; ?> <?php else: ?> <?php echo h($title); ?> <?php endif; ?> </p> <p>画像ファイル: <?php if(strlen($_FILES["uploadfile"]["name"]) > 0 ) :?> <?php $fileinfo = pathinfo($_FILES["uploadfile"]["name"]); ?> <?php $fileext = strtoupper($fileinfo["extension"]); ?> <?php $errmsg = ""; ?> <?php if ($fileext != "PNG" and $fileext != "JPG") :?> <?php $errmsg .= "<p style='color:red;'>対象ファイルはPNGまたはJPGのみです!</p><br>"; ?> <?php else: ?> <?php $movetofile = "images/upf_" . $_FILES["uploadfile"]["name"]; ?> <?php if (! move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $movetofile)) :?> <?php $errmsg .= "<p style='color:red;'>ファイルのアップロードに失敗しました。</p><br>"; ?> <?php endif; ?> <?php endif; ?> <?php if ($errmsg == "") :?> <?php echo $_FILES["uploadfile"]["name"] . "<br>"; ?> <?php echo "<img src='$movetofile'><br><br><br>"; ?> <?php else: ?> <?php echo $errmsg . "<br><br><br>"; ?> <?php @unlink($_FILES["uploadfile"]["tmp_name"]); ?> <?php endif; ?> <?php else: ?> <?php echo "<p style='color:red;'>アップロードするファイルが指定されていません!</p><br>"; ?> <?php endif; ?> </p> <p class="return"><a href="posting.php">画像投稿ページへ戻る>></a></p> <p class="link"><a href="index.php">画像一覧ヘージはこちら>></a></p> </div> </body> </html>

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

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

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

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

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

guest

回答1

0

php

1$sql = "insert into posts (create_at datetime, name, image_name, img_data) values 2 (:now(), :name, :title, :movetofile)";

php

1$sql = "insert into posts (create_at datetime, name, image_name, img_data) values 2 (now(), :name, :title, :movetofile)";

他の部分は見ていないので、提示されているエラーメッセージ部分だけ指摘しています。

投稿2015/11/15 05:39

編集2015/11/15 05:40
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

DaikiYamada

2015/11/15 05:44

早速ありがとうございます。今修正致しました!が、しかし他にも間違っている箇所があるせいか、同じエラーが出続けています・・・
退会済みユーザー

退会済みユーザー

2015/11/15 05:46

他の間違いなら同じエラーにはならないはずです。正しい情報を提示してください。
DaikiYamada

2015/11/15 05:53

以下のエラーです。 Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /var/www/html/php_kadai/php_kadai09/thanks.php on line 16
退会済みユーザー

退会済みユーザー

2015/11/15 05:55

$stmt->bindParam(":titile", $title); ここタイポしてますね。
DaikiYamada

2015/11/15 06:07

スペルミス。。。お恥ずかしい。ありがとうございます! エラーは解決されたのですが、データベースにinsertされません。 なぜだろう。。。ターミナルのキャプチャーは記載致しました。
退会済みユーザー

退会済みユーザー

2015/11/15 06:09

提示されているソースだけでは判断できませんね… オートコミットをOFFにしていたり、可能性は他にいくらでもありうるので。
DaikiYamada

2015/11/15 06:36

insert into posts (create_at datetime, name, を insert into posts (create_at, name, にしたら無事insert できました。ただimg_dataのフィールドがnullになっています。$stmt->bindParam(":movetofile", $movetofile); がうまくいっていないのでしょうか?
退会済みユーザー

退会済みユーザー

2015/11/15 06:40

var_dump($movetofile); // 値が入っているかくらい、デバッグしてください $stmt->bindParam(":movetofile", $movetofile); ソースを見る限り、こちらでは判断できません。 そもそも どこで定義しているのだか…??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問