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

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

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

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

PHP

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

Q&A

解決済

2回答

2187閲覧

mysqlにデータが格納されない

yano199102

総合スコア10

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/09/04 01:16

編集2019/09/05 15:00

phpで下記コーディングをすると、
mysqlのDBにデータがどんどん格納されていくと本に記載があり、コードチェックを何度も行い
試していますが、データが格納されず困っています。

<?php $dsn = 'mysql:dbname=phpkiso;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8');

~~~~~~~~~~~~~~~~~~
phpの最後ら辺には以下コードが入っています。
~~~~~~~~~~~~~~~~~~

$sql = 'INSERT INTO anketo(nickname,email,goiken)VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")'; $stmt = $dbh->prepare($sql); $stmt->execute(); $dbh = null; ?>

以上になります。

状況をより詳細にお伝えしますと
コードのページは以下です(2ファイル)。

必要事項記入用のファイル⇓

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname = $_POST["nickname"]; $email = $_POST["email"]; $goiken = $_POST["goiken"]; $nickname = htmlspecialchars($nickname); $email = htmlspecialchars($email); $goiken = htmlspecialchars($goiken); if($nickname == ""){ print"ニックネームを入力してください<br />"; } else{ print"ようこそ"; print $nickname; print"様<br />"; } if($email == ""){ print"emailを入力してください<br />"; } else{ print "メールアドレス:"; print $email; print "<br />"; } if($goiken == ""){ print"ご意見を入力してください<br />"; } else{ print"「ご意見:"; print $goiken; print "」<br />"; } if($nickname==''||$email==''||$goiken==''){ print '<form>'; print '<input type="button" onclick="histroy.back()" value="戻る">'; print '</form>'; }else { print '<form method="post" action="thanks.php">'; print '<input name="nickname"type="hidden"value="'.$nickname.'">'; print '<input name="email" type="hidden" value="'.$email.'">'; print '<input name="goiken" type="hidden" value="'.$goiken.'">'; print '<input type="button" onclick="hstory.back()" value="戻る">'; print '<input type="submit" value="OK!!!">'; print '</form>'; } ?> </body> </html>

以下、飛ぶページ⇓
※mysqlにデータが飛ぶようにしています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $dsn = 'mysql:dbname=phpkiso;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; $nickname = htmlspecialchars($nickname); $email = htmlspecialchars($email); $goiken = htmlspecialchars($goiken); print $nickname; print '様<br />'; print 'ご意見ありがとうございました!<br />'; print '頂いたご意見「'; print $goiken; print '」<br />'; print $email; print 'にメールを送りしましたのでご確認ください。'; $mail_sub='アンケートを受け付けました。'; $mail_body= $nickname."様へ\nアンケートご協力ありがとうございました。"; $mail_body=html_entity_decade($mail_body,ENT_QUOTES,"UTF-8"); $mail_head='From:djokovickyear@gmail.com'; mb_language('Japanese'); mb_internal_encording("UTF-8"); mb_send_mail($email,$mail_sub,$mail_body,$mail_head); $sql = 'INSERT INTO anketo(nickname,email,goiken)VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")'; $stmt = $dbh->prepare($sql); $stmt->execute(); $dbh = null; ?> </body> </html>

以上です。

mysqlでの設定は本の流れに沿って下記の通り完了している状況です。

code nickname email          goiken
1 ろくまる  djokovicyear@gmail.com おいしかったです

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/09/04 01:19

PHP のタグを付けた方が良いと思います。
Y.H.

2019/09/04 01:30

エラーを表示するように以下ini_set2行を追加して実行してください。 実行した結果表示されたエラーを質問に記載ください。(エラーが表示されない場合はその旨記載ください。) 例: <?php ini_set( 'display_errors', 1 ); ini_set('error_reporting', E_ALL);
m.ts10806

2019/09/04 01:48

コードはマークダウンのcode機能を利用してご提示ください
yano199102

2019/09/05 15:09

ini_set2行を追加して実行しました。 下記実行結果です。 ーーーーーーーーーーーーーーーー たかし様 ご意見ありがとうございました! 頂いたご意見「OKgoogle」 d@にメールを送りしましたのでご確認ください。 Fatal error: Call to undefined function html_entity_decade() in C:\xampp\htdocs\phpkiso\thanks.php on line 39
yano199102

2019/09/05 15:09

phpタグをつけました。ご指摘ありがとうございます。
yano199102

2019/09/05 15:10

マークダウンのcode機能で編集しました。ご指摘ありがとうございます。
Y.H.

2019/09/05 15:17 編集

m.ts10806さんの回答通りtypoですね。decade → decode > Fatal error: Call to undefined function html_entity_decade() 致命的エラー:未定義関数html_entity_decade()の呼び出し で、これを修正して実行すると、yambejpさんの回答の修正が必要です
yano199102

2019/09/05 15:47

m.ts10806さん、Y.H.さん typoのご指摘ありがとうございます。 ×decade→decodeですね。 こちらを修正しての実行の場合は下記結果でした。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Fatal error: Call to undefined function mb_internal_encording() in C:\xampp\htdocs\phpkiso\thanks.php on line 42
Y.H.

2019/09/05 21:10

ひとつtypoが見つかって、それと同じエラーが別の所で出たのだから こちらもtypoと自分で気づきましょうよ。。。
guest

回答2

0

ベストアンサー

直接的な原因ではないですが、html_entity_decade()という関数は標準関数にはありません。
PHPマニュアル確認してください。
html_entity_decode()

おそらくエラーがたくさん出ているのでは。
エラー表示ONにして確認してみてください。

あと色々と基本的なところでつまずいています。
下記のような記事を熟読し、基本の流れをおさえるようにしてください。

メール送信部分は今は外しておいたほうが良いでしょう(もしローカルPCであれば別途設定しないと送れませんし、あれもこれも一気にやると問題の切り分けが困難になります)

投稿2019/09/04 02:02

編集2019/09/04 13:44
m.ts10806

総合スコア80854

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

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

m.ts10806

2019/09/04 13:45

低評価理由コメント願います。何か間違っている内容がありましたら調整します。 (それに「言わなくても分かるでしょ」というような回答の間違いではないと思います)
yano199102

2019/09/05 15:50

メール送信部を一旦はずしたら、Mysqlに問題なくデータが飛びました。 「PHPでデータベースに接続するときのまとめ」をご紹介いただきありがとうございます。 おっしゃる通り、基本的な部分の理解が足りていないので、勉強いたします。。
yano199102

2019/09/05 15:54

ご丁寧に解説頂きありがとうございました。
guest

0

prepare処理(プレースホルダー)を誤解しているようです

$sql = 'INSERT INTO anketo(nickname,email,goiken)VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")';

$stmt = $dbh->prepare($sql);
$stmt->execute();

SQL

1$sql = 'INSERT INTO anketo(nickname,email,goiken)VALUES(?,?,?)'; 2$stmt = $dbh->prepare($sql); 3$stmt->execute([$nickname,$email,$goiken]);

投稿2019/09/04 01:30

yambejp

総合スコア114968

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

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

yano199102

2019/09/07 07:46

遅くなりすみません。 そもそもの知識が浅く理解するために色々と調べて時間がかかってしまいました。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問