前提・実現したいこと
PHP初学者です。
データベースに会員の追加(登録)がしたいです。
※参考書ベースで学習しているのですが、オブジェクト指向は理解しておらず、
参考書でのコードを参考にそのままコードを書いている状況です。※
発生している問題・エラーメッセージ
try ~ catch で、catchの中身が表示され、データベースに登録ができません。
※$stmt->execute($data);が問題だと思われます。
該当のソースコード
php
1 try 2 { 3 $post=$_POST; 4 5//配列の値は表示されました。 6 print_r ($post); 7 8 $name=$post['name']; 9 $year=$post['year']; 10 $pass=$post['pass']; 11 $mail=$post['mail']; 12 13 require_once '../db.php'; 14 $dbh=new PDO($dsn,$user,$password); 15 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 16 17 $sql='INSERT INTO member(name,year,pass,mail) VALUES (?,?,?,?)'; 18 $stmt=$dbh->prepare($sql); 19 $data[]=$name; 20 $data[]=$year; 21 $data[]=$pass; 22 $data[]=$mail; 23 24print '23'; 25//この23というのは表示されました。 26 27 $stmt->execute($data); 28 29print '26'; 30// 〇この26は表示されませんでした。 31 32 $dbh=null; 33 34 } 35 catch (\Exception $e) 36 { 37 print 'ただいま障害によりご迷惑をおかけしております。'; 38 print '<form action="registration.html" method="post">'; 39 print '<input type="submit" value="戻る">'; 40 print '</form>'; 41 exit(); 42 }
MySQL
1-- テーブルの構造 `member` 2-- 3 4CREATE TABLE `member` ( 5`code` int(11) NOT NULL, 6`name` varchar(50) NOT NULL, 7`year` varchar(11) NOT NULL, 8`pass` varchar(32) NOT NULL, 9`mail` varchar(50) NOT NULL 10) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 11 12-- 13-- テーブルのデータのダンプ `member` 14-- 15 16INSERT INTO `member` (`code`, `name`, `year`, `pass`, `mail`) VALUES 17(1, 'tetejiro', '1', '47bce5c74f589f4867dbd57e9ca9f808', 'aaa@gmail.com'),
試したこと
上記にある通り、配列の値があることは確認できています。
$stmt->execute($data);がうまくいっていないと思うのですが、どうすればいいでしょうか、、
どうぞよろしくお願いいたします。
他のページではデータベースでの操作はできています。(ログインなど)
XAMPPを利用しており、MySQL , Apache を利用しています。
回答2件
あなたの回答
tips
プレビュー