いきなりはじめるphp基礎という書籍を利用して勉強しています。
SQL & データベース周り を触るのは初めてです。
前のページで情報を入力してOKボタンを押すとメッセージを出力し、データをデータベースに登録するという機能を実装するという流れです。
これが登録機能のないメッセージ出力のみのページです。
動きました。
(SQL文をコメントアウトして動作確認済)
php
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>PHP基礎</title> 6 </head> 7 <body> 8 9 <?php 10 // $dsn = 'mysql:dbname=phpkeso;host=localhost'; 11 // $user = 'root'; 12 // $password = ''; 13 // $dbh = new PDO($dsn, $user, $password); 14 // $dbh->query('SET NAMES utf8'); 15 16 $nickname = $_POST['nickname']; 17 $email = $_POST['email']; 18 $goiken = $_POST['goiken']; 19 20 $nickname = htmlspecialchars($nickname); 21 $email = htmlspecialchars($email); 22 $goiken = htmlspecialchars($goiken); 23 24 print $nickname; 25 print '様<br />'; 26 print 'ご意見ありがとうございました<br />'; 27 print 'いただいたご意見「'; 28 print $goiken; 29 print '」<br />'; 30 print $email; 31 print 'にメールを送りましたのでご確認ください。'; 32 33 $mail_sub = 'アンケートを受け付けました。'; 34 $mail_body = $nickname . "様へ\nアンケートご協力ありがとうございました。"; 35 $mail_body = html_entity_decode($mail_body, ENT_QUOTES, "UTF-8"); 36 $mail_head = 'From: aaa@bbb.com.jp'; 37 mb_language('Japanese'); 38 mb_internal_encoding("UTF-8"); 39 mb_send_mail($email, $mail_sub, $mail_body, $mail_head); 40 41 // $sql = 'INSERT INTO anketo (nickname, email, goiken) VALUES ("' . $nickname . '", "' . $email . '", "' . $goiken . '")'; 42 // $stmt = $dbh->prepare($sql); 43 // $stmt->execute(); 44 45 // $dbh = null; 46 ?> 47 48 </body> 49</html>
コメントアウトを外す(登録機能を実装)と何も出力されない真っ白な画面になります。
php
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>PHP基礎</title> 6 </head> 7 <body> 8 9 <?php 10 $dsn = 'mysql:dbname=phpkeso;host=localhost'; 11 $user = 'root'; 12 $password = ''; 13 $dbh = new PDO($dsn, $user, $password); 14 $dbh->query('SET NAMES utf8'); 15 16 $nickname = $_POST['nickname']; 17 $email = $_POST['email']; 18 $goiken = $_POST['goiken']; 19 20 $nickname = htmlspecialchars($nickname); 21 $email = htmlspecialchars($email); 22 $goiken = htmlspecialchars($goiken); 23 24 print $nickname; 25 print '様<br />'; 26 print 'ご意見ありがとうございました<br />'; 27 print 'いただいたご意見「'; 28 print $goiken; 29 print '」<br />'; 30 print $email; 31 print 'にメールを送りましたのでご確認ください。'; 32 33 $mail_sub = 'アンケートを受け付けました。'; 34 $mail_body = $nickname . "様へ\nアンケートご協力ありがとうございました。"; 35 $mail_body = html_entity_decode($mail_body, ENT_QUOTES, "UTF-8"); 36 $mail_head = 'From: aaa@bbb.com.jp'; 37 mb_language('Japanese'); 38 mb_internal_encoding("UTF-8"); 39 mb_send_mail($email, $mail_sub, $mail_body, $mail_head); 40 41 $sql = 'INSERT INTO anketo (nickname, email, goiken) VALUES ("' . $nickname . '", "' . $email . '", "' . $goiken . '")'; 42 $stmt = $dbh->prepare($sql); 43 $stmt->execute(); 44 45 $dbh = null; 46 ?> 47 48 </body> 49</html>
ページのソースを表示すると
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>PHP基礎</title> 6 </head> 7 <body>
となっていてSQL文で挟まれた部分は消えています。
本の通りに進めていて、コードの写しミスは確認しましたがありませんでした。
原因が分かるかたいましたらお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/08 13:38