質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1339閲覧

SQL文を直接ファイルに書くとプログラム内容が消えてしまう。

souta_n

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/05/08 13:32

いきなりはじめる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文で挟まれた部分は消えています。
本の通りに進めていて、コードの写しミスは確認しましたがありませんでした。
原因が分かるかたいましたらお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

pdoで処理するならtry-catchでエラーをひろってください

投稿2020/05/08 13:38

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/05/08 13:38

try{ $pdo = new PDO($dsn, $user,$password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql="・・・"; $stmt = $pdo->prepare($sql); $stmt->execute([]); $rows=$stmt->fetchAll(PDO::FETCH_ASSOC); print_r($rows); }catch(PDOException $e){ die($e->getMessage()); }
guest

0

自己解決

同じ問題の方が見つかりました。
解決策もネットにありました
お騒がせいたしました。

投稿2020/05/08 13:37

souta_n

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/05/08 13:40

後からこの質問を見た人のためにその解決策を記載してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問