フォームに入力したデータをデーバベースに登録したいのですが、「登録が完了しました」というメッセージが表示されているのですが、なぜかデータベースには登録されていません。もしかしたら、PHPでエラーが出てるのかもしれないと思い、
PHP
1error_reporting(E_ALL ^ E_NOTICE);
を挿入してみましたが、エラーが出ている気配はありません。
###該当のソースコード
※ DB接続のユーザー・パスワードは載せていません。
add.php
php
1<?php 2session_start(); 3error_reporting(E_ALL ^ E_NOTICE); 4 5$db['host'] = 'localhost'; 6$db['user'] = '(ユーザー)'; 7$db['pass'] = '(パスワード)'; 8$db['dbname'] = '(DBネーム)'; 9 10// エラーメッセージ、登録完了メッセージの初期化 11$errorMessage = ""; 12$signUpMessage = ""; 13 14// ログインボタンが押された場合 15if (isset($_POST["signUp"])) { 16 // 1. ユーザIDの入力チェック 17 if (empty($_POST["kanriclass"])) { // 値が空のとき 18 $errorMessage = '管理クラスが未入力です。'; 19 } else if (empty($_POST["kanrino"])) { // 値が空のとき 20 $errorMessage = '管理番号が未入力です。'; 21 } else if (empty($_POST["songnamekana"])) { // 値が空のとき 22 $errorMessage = '曲名(カナ)が未入力です。'; 23 } else if (empty($_POST["songname"])) { // 値が空のとき 24 $errorMessage = '曲名が未入力です。'; 25 } 26 27 if (!empty($_POST["kanriclass"]) && !empty($_POST["kanrino"]) && !empty($_POST["songnamekana"]) && !empty($_POST["songname"])) { 28 // 入力したユーザIDとパスワードを格納 29 $kanriclass = $_POST["kanriclass"]; 30 $kanrino = $_POST["kanrino"]; 31 $songnamekana = $_POST["songnamekana"]; 32 $songname = $_POST["songname"]; 33 $memo = $_POST["memo"]; 34 35 // 2. ユーザIDとパスワードが入力されていたら認証する 36 $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',$db['host'],$db['dbname']); 37 38 // 3. エラー処理 39 try { 40 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 41 42 $stmt = $pdo->prepare("INSERT INTO test(kanriclass, kanrino, songnamekana, songname, memo VALUES (?, ?, ?, ?, ?)"); 43 44 $signUpMessage = '登録が完了しました。管理クラス・番号は '. $kanriclass. '-'. $kanrino. ' です。曲名:「'. $songname. '('. $songnamekana. ')」、また、メモとして「'. $memo. '」を追加しました。'; 45 } catch (PDOException $e) { 46 $errorMessage = 'データベースエラー'; 47 // $e->getMessage() でエラー内容を参照可能(デバック時のみ表示) 48 echo $e->getMessage(); 49 } 50 } 51} 52?> 53 54<!doctype html> 55<html> 56 <head> 57 <meta charset="UTF-8"> 58 <title>新規登録</title> 59 </head> 60 <body> 61 <h1>新規登録画面</h1> 62 <form id="loginForm" name="loginForm" action="" method="POST"> 63 <fieldset> 64 <legend>新規登録フォーム</legend> 65 <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div> 66 <div><font color="#0000ff"><?php echo htmlspecialchars($signUpMessage, ENT_QUOTES); ?></font></div> 67 68 <label for="kanriclass">※必須※ 登録クラス</label><input type="text" required id="kanriclass" name="kanriclass" value="<?php if (!empty($_POST["kanriclass"])) {echo htmlspecialchars($_POST["kanriclass"], ENT_QUOTES);} ?>" placeholder="クラスを入力"> 69 <br> 70 <label for="kanrino">※必須※ 管理番号</label><input type="text" required id="kanrino" name="kanrino" value="<?php if (!empty($_POST["kanrino"])) {echo htmlspecialchars($_POST["kanrino"], ENT_QUOTES);} ?>" placeholder="管理番号を入力"> 71 <br> 72 <label for="songnamekana">※必須※ 曲名(カナ)</label><input type="text" required id="songnamekana" name="songnamekana" value="<?php if (!empty($_POST["songnamekana"])) {echo htmlspecialchars($_POST["songnamekana"], ENT_QUOTES);} ?>" placeholder="曲名のカナを入力"> 73 <br> 74 <label for="songname">※必須※ 曲名</label><input type="text" required id="songname" name="songname" value="<?php if (!empty($_POST["songname"])) {echo htmlspecialchars($_POST["songname"], ENT_QUOTES);} ?>" placeholder="曲名を入力"> 75 <br> 76 <label for="memo">メモ(任意)</label><textarea type="text" id="memo" name="memo" cols="50" rows="10" placeholder="メモを入力"></textarea> 77 <br> 78 <input type="submit" id="signUp" name="signUp" value="新規登録"> 79 </fieldset> 80 </form> 81 </body> 82</html>
PHPMyAdmin(testテーブル)
SQL
1CREATE TABLE IF NOT EXISTS `test` ( 2 `id` int(5) NOT NULL AUTO_INCREMENT, 3 `kanriclass` varchar(30) NOT NULL, 4 `kanrino` int(30) NOT NULL, 5 `songnamekana` char(100) NOT NULL, 6 `songname` char(100) NOT NULL, 7 `memo` text, 8 PRIMARY KEY (`id`) 9) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
###試したこと
・「日本語」だから登録できないのかと思い、日本語をすべて英語に変えてみましたが、だめでした
###補足情報(言語/FW/ツール等のバージョンなど)
サーバー:「XREA(s1001)」
PHPバージョン:5.5.38
phpMyAdmin:4.0.10.15
回答1件
あなたの回答
tips
プレビュー