前提
Viewsフォルダにcontact.php, confirm.php, complete.php
ControllersフォルダにContactControl.php
ModelsフォルダにDb.phpをそれぞれ作成。
confirm.phpにて送信ボタンがクリックされ、complete.phpに渡ってきた入力データをデータベースに保存したい。
complete.php内にrequire_onceにてDb.phpを呼び出しています。
実現したいこと
confirm.phpにて送信ボタンがクリックされ、complete.phpに渡ってきた入力データをデータベースに保存したい。
発生している問題・エラーメッセージ
処理自体は正常にできているようだが、phpmyadminのテーブルを確認すると入力内容が保存されていないです。
試しにDb.php内にて『echo $name;』及び『echo "接続成功";』と出力したところ、正常に画面に出力されたため、接続やconfirm.phpからの入力値自体は渡ってきているようです。
該当のソースコード
complete.php
1<?php 2if ($_SERVER["REQUEST_METHOD"] != "POST") { 3 header("Location: contact.php"); 4 exit(); 5} 6ini_set('display_errors', "On"); 7 8require_once(ROOT_PATH .'Models/Db.php'); 9ConectDb(); 10 11 12 13?> 14 15<!DOCTYPE html> 16<html lang="ja"> 17<head> 18 <meta charset="utf-8"> 19 <title>お問い合わせ完了画面</title> 20 <link rel="stylesheet" href="../public/css/style.css"> 21</head> 22<body> 23 <div class="container"> 24 <h1 class="contact_title">完了画面</h1> 25 <div class="completeMessage"> 26 <h2> 27 お問い合わせ内容を送信しました。<br> 28 ありがとうございました。 29 </h2> 30 </div> 31 <div><a href="index.php">トップ画面へ</a></div> 32 </div> 33</body>
Db.php
1 2function ConnectDb() 3{ 4 $dsn = 'mysql:host=localhost;dbname=casteria;charset=utf8'; 5 $user = 'root'; 6 $password = ''; 7 8 try { 9 $dbh = new PDO($dsn, $user, $password); 10 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 $dbh->beginTransaction(); 12 13 // $fullname = $_SESSION['fullname']; 14 // $furigana = $_SESSION['furigana']; 15 // $tellNumber = $_SESSION['tellNumber']; 16 // $email = $_SESSION['email']; 17 // $message = $_SESSION['message']; 18 19 $fullname = $_POST['fullname']; 20 $kana = $_POST['furigana']; 21 $tel = $_POST['tellNumber']; 22 $email = $_POST['email']; 23 $body = $_POST['message']; 24 25 $sql = "INSERT INTO contacts (fullname, kana, tel, email, body) VALUES (:fullname, :furigana, :tellNumber, :email, :message)"; 26 $stmt = $dbh->prepare($sql); 27 $params = array(':fullname' => $fullname, 'furigana' => $kana, 'tellNumber' => $tel, 'email' => $email, 'message' => $body); 28 $stmt->execute($params); 29 30 echo "接続成功"; 31 echo $fullname; 32 } catch (PDOException $e) { 33 echo "接続失敗: " . $e->getMessage() . "\n"; 34 exit(); 35 } 36}
試したこと
『php データベース 保存されない』と検索したのですが、答えに辿り付けませんでした。
補足情報(FW/ツールのバージョンなど)
環境はMAMPを使用しています。
phpmyadminのテーブルのスクショと完了画面のスクショを添付いたします。
どうかよろしくお願いいたします。
回答1件