前提・実現したいこと
PHPでデータベースの値を変更するシステムを作っています。
今までは変更がきちんと行われていたのですが後にデータベースに電話番号というカラムを追加したのでそれに伴ってプログラミングに電話番号を変更する項目を追加したところ、例外処理に入ってしまうようになりました。
発生している問題・エラーメッセージ
回答、修正依頼いただいた内容を反映するとこのようなエラーが出ました
エラーメッセージを検索してみるとプレースホルダとバインダ変数の数が合わないときに出るエラーとのことなのですが
プログラム内のプレースホルダの数とdata[]の数はあっているように思うのですが、エラーが出てしまいます
該当のソースコード
<html> <head> <meta charset="UTF-8"> <title>ボランティア情報変更</title> </head> <body> <h3>ボランティア情報変更</h3> <br> <?php session_start(); if(isset($_POST['edit'])){ print "<hr>\n"; print "以下のデータを受け取りました。<BR>\n"; $name = htmlspecialchars($_POST['name']); $phone = htmlspecialchars($_POST['phone']); $mail = htmlspecialchars($_POST['mail']); $qua = htmlspecialchars($_POST['qua']); print "氏名: ".$name." メールアドレス: ".$mail." 電話番号: ".$phone. " 資格: ".$qua; print "<hr>\n"; try{ $dsn = 'mysql:dbname=map;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn, $user, $password); //データベースに接続 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->query('SET NAMES utf8'); //文字コードのための設定 $sql = "UPDATE volunteer set name = ?, phone = ?, mail = ?, qua = ? where id = ?"; $stmt = $dbh->prepare($sql); $data[] = $name; $deta[] = $phone; $data[] = $mail; $data[] = $qua; $data[] = $_SESSION["id"]; $stmt->execute($data); $dbh = null; //データベースから切断 } catch(PDOException $e){ die($e->getMessage()); print 'サーバが停止しておりますので暫くお待ちください。'; exit(); } } $dbh = null; // データベースから切断 ?> <BR><BR> <form method="post" action=""> 氏名:<BR> <input type="text" name="name"><BR> 電話番号:<BR> <input type="text" name="phone"><BR> メールアドレス:<BR> <input type="text" name="mail"><BR> 資格:<BR> <input type="text" name="qua"><BR> <input type="submit" name="edit" value="変更"> </body> </html>
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー