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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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スクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

1626閲覧

データベースに登録ができない。

kur3

総合スコア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スクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2020/06/26 02:13

MACユーザーです。
市販の教科書「気づけば プロ並み PHP改訂版」を使ってPHPを勉強しています。

form情報をPOSTで受け取ってデータベースに登録をしたいのですがコードをサンプル通りに打ち込んでも
tyr~catch文のcatchのプログラムしか作動しません。
原因が検討つかず、お手伝いをお願いしたいです、よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

MAMPを使っています。エディタはAtomです。

発生している問題・エラーメッセージ

linterによるエラーメッセージはありません。 結果として、'只今障害によりご迷惑をおかけしております。'と出てきます。 データベースを見ても登録はされていません。

確認したこと

、、、
データベースにアクセスする際のデータベース名、ポート名(localhost8889は間違いありません)
$user,$passwordの'root'

html

1ファイル名staff_add.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title>ロクマル農園</title> 7</head> 8<body> 9<h1>スタッフ追加</h1> 10<!-- <p>スタッフ名を入力してください。</p> --> 11<form action="staff_add_check.php" method="post"> 12 スタッフ名を入力してください<br> 13 <input type="text" name="name" style="width:200px"><br> 14 パスワードを入力してください。<br> 15 <input type="password" name="pass" style="width:100px"><br> 16 パスワードをもう一度入力してください。<br> 17 <input type="password" name="pass2" style="width:100px"><br> 18 <br> 19 <input type="button" onclick="history.back()" value="戻る"> 20 <input type="submit" value="OK"> 21</form> 22</body> 23</html>

html2

1ファイル名staff_add_check.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title></title> 7</head> 8<body> 9 10<?php 11 12$staff_name=$_POST['name']; 13$staff_pass=$_POST['pass']; 14$staff_pass2=$_POST['pass2']; 15 16$staff_name= htmlspecialchars($staff_name, ENT_QUOTES,'utf-8'); 17$staff_pass= htmlspecialchars($staff_pass, ENT_QUOTES,'utf-8'); 18$staff_pass2= htmlspecialchars($staff_pass2, ENT_QUOTES,'utf-8'); 19 20if($staff_name=='') 21{ 22 print 'スタッフ名が入力されていません。<br>'; 23} 24else 25{ 26 print 'スタッフ名:'; 27 print $staff_name; 28 print '<br>'; 29} 30 31if($staff_pass=='') 32{ 33 print 'パスワードが入力されていません。<br>'; 34} 35// else 36// { 37// print $staff_pass; 38// } 39 40if($staff_pass!==$staff_pass2) 41{ 42 print 'パスワードが一致していません。<br>'; 43} 44 45if($staff_name==''||$staff_pass==''||$staff_pass!=$staff_pass2) 46{ 47 print '<form>'; 48 print '<input type="button" onclick="history.back()" value="戻る">'; 49 print '</form>'; 50} 51else { 52 $staff_pass=md5($staff_pass); 53 print '<form method="POST" action="staff_add_done.php">'; 54 print '<input="hidden" name="name" value="'.$staff_name.'">'; 55 print '<input="hidden" name="pass" value="'.$staff_pass.'">'; 56 print '<br>'; 57 print '<input type="button" onclick="history.back()" value="戻る">'; 58 print '<input type="submit" value="OK">'; 59 print '</form>'; 60} 61 62 ?> 63</body> 64</html> 65

html3

1ファイル名staff_add_done.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title></title> 7</head> 8<body> 9 10<?php 11 12try 13{ 14 15$staff_name = $_POST['name']; 16$staff_pass = $_POST['pass']; 17 18$staff_name = htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); 19$staff_pass = htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 20 21$dsn = 'mysql:dbname=shop;host=localhost8889;charset=utf8'; 22$user = 'root'; 23$password = ''; 24$dbh = new PDO($dsn,$user,$password); 25$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 26 27$sql = 'INSERT INTO mst_staff(name,password) VALUES (?,?)'; 28$stmt = $dbh->prepare($sql); 29$data[] =$staff_name; 30$data[] =$staff_pass; 31$stmt->execute($data); 32 33$dbh = null; 34 35print $staff_name; 36print 'さんを追加しました。<br>'; 37 38} 39catch (Exception $e) 40{ 41print '只今障害によりご迷惑をおかけしております。'; 42exit(); 43} 44 45 ?> 46 47 <a href="staff_list.php">戻る</a> 48</body> 49</html> 50

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

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

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

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

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

mdj

2020/06/26 02:28

POSTで情報を送った先で、送られてきた情報があるかをechoで表示して確認してみてください。そもそも送られているのか、送られてはいるけど登録ができていないのかを調べてください。
kur3

2020/06/26 02:39

ありがとうございます。echo $_POST['name']; で何も表示されなかったのでそもそもデータを受け取れていないということでしょうか?その場合は前のページのformコードに問題がありますか?
kai0310

2020/06/26 13:27

この書籍を参考にしてうまくいかなかった人はteratailでもよく見かけます。 (ロジックの部分も、、) あまり参考にしすぎないで、自身で適時修正する必要があるかと思います。
guest

回答1

0

ベストアンサー

エラーを「catch (Exception $e)」で受けていますが
PDOExceptionで受け直してください

PHP

1catch(PDOException $e){ 2 die($e->getMessage()); 3}

投稿2020/06/26 02:38

編集2020/06/26 02:39
yambejp

総合スコア114572

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

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

kur3

2020/06/26 02:46

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not knownとコメントがありました。
yambejp

2020/06/26 02:55 編集

2002エラーはソケットの指定が間違っているときのエラーのようですが、 php_network_getaddressesの表記が唐突ですね・・・ 普通「host=localhost8889」って「host=localhost」じゃないのですか? (localhost8889を探して失敗?)
kur3

2020/06/26 05:31

host=localhostに直したら作動しました、、、ありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問