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

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

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

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

Q&A

1回答

757閲覧

PHPのフォーマットからデータベースに保存されません

wa_d_a

総合スコア0

PHP

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

0グッド

0クリップ

投稿2020/06/29 11:49

前提・実現したいこと

PHPで入力したメールアドレス、ニックネーム、パスワードを保存したいのですが何度やっても保存されていません
MACを使用しており、開発環境はMAMPです。
phpadminを使っていてデータベース名はstudyです。

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

エラーメッセージは出てこないが、データベースには保存されてい無い

該当のソースコード

<?php try { $db = new PDO('mysql:dbname=study;host=localhost;charset=utf8','root','root'); }catch(PDOException $e) { print('DB接続エラー:' . $e->getMessage()); } ?> <?php session_start();                           require('../dbconnect.php'); 上のソースコードは違うフォルダに書いています。 ?>                  ←のソースコードはフォーマットがあるフォルダです

試したこと

ネットで調べ出てきたことはほとんどやりました

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

ここにより詳細な情報を記載してください。。

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

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

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

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

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

hayato7

2020/06/29 12:00

DB接続の記述しかないようですが、ソースコードは、これだけでしょうか?
wa_d_a

2020/06/30 11:31

<?php session_start(); require('../dbconnect.php'); if(!empty($_POST)){ if($_POST['name'] === ''){ $error['name'] = 'blank'; } if($_POST['email'] === ''){ $error['email'] = 'blank'; } if(strlen($_POST['password']) < 4){ $error['password'] = 'length'; } if($_POST['password'] === ''){ $error['password'] = 'blank'; } if(empty($error)){ $members = $db->prepare('SELECT COUNT(*) AS cnt FROM members WHERE email=?'); $members->execute(array($_POST['email'])); if($record['cnt'] > 0){ $error['email'] = 'duplicate'; } } if(empty($error)){ $_SESSION['join'] = $_POST; header('Location: check.php'); exit(); } } if($_REQUEST['action'] == 'rewrite' && isset($_SESSION['join'])){ $_POST = $_SESSION['join']; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>会員登録</title> <link rel="stylesheet" href="../style.css" /> </head> <body> <div id="wrap"> <div id="head"> <h1>会員登録</h1> </div> <div id="content"> <p>次のフォームに必要事項をご記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php print(htmlspecialchars ($_POST['name'],ENT_QUOTES));?>" /> <?php if($error['name']=== 'blank'):?> <p class="error">*ニックネームを入力してください</p> <?php endif;?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars ($_POST['email'],ENT_QUOTES));?>" /> <?php if($error['email']=== 'blank'):?> <p class="error">*メールアドレスを入力してください</p> <?php endif;?> <?php if($error['email'] === 'duplicate'):?> <p class="error">*指定されたメールアドレスはすでに使われています</p> <?php endif;?> <dt>パスワード<span class="required">必須</span></dt> <dd> <input type="password" name="password" size="10" maxlength="20" value="<?php print(htmlspecialchars ($_POST['password'],ENT_QUOTES));?>" /> <?php if($error['password'] === 'length'):?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif;?> <?php if($error['password'] === 'blank'):?> <p class="error">*パスワードを入力してください</p> <?php endif;?> </dd> </dl> <div><input type="submit" value="入力内容を確認する" /></div> </form> </div> </body> </html> <?php require('dbconnect.php'); if(!empty($_POST)){ if($_POST['email'] !== '' && $_POST['password'] !== ''){ $login = $db->prepare('SELECT * FROM members WHERE email=? AND password=?'); $login->execute(array( $_POST['email'], sha1($_POST['password']) )); $member = $login->fetch(); if($member){ $_SESSION['id'] = $member['id']; $_SESSION['time'] = time(); header('Location:index.php'); exit(); }else{ $error['login'] = 'failed'; } }else{ $error['login'] = 'blank'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>ログインする</title> </head> <body> <div id="wrap"> <div id="head"> <h1>ログインする</h1> </div> <div id="content"> <div id="lead"> <p>メールアドレスとパスワードを記入してログインしてください。</p> <p>入会手続きがまだの方はこちらからどうぞ。</p> <p>&raquo;<a href="join/">入会手続きをする</a></p> </div> <form action="" method="post"> <dl> <dt>メールアドレス</dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['email'], ENT_QUOTES)); ?>" /> <?php if($error['login'] === 'blank'):?> <p class="error">*メールアドレスとパスワードを入力してください</p> <?php endif;?> <?php if($error['login'] === 'failed'):?>   <p class="error">*ログインに失敗しました。正しくご記入ください</p> <?php endif;?> </dd> <dt>パスワード</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['password'], ENT_QUOTES)); ?>" /> </dd> <dt>ログイン情報の記録</dt> <dd> <input id="save" type="checkbox" name="save" value="on"> <label for="save">次回からは自動的にログインする</label> </dd> </dl> <div> <input type="submit" value="ログインする" /> </div> </form> </div> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html> <?php require('dbconnect.php'); if(!empty($_POST)){ if($_POST['email'] !== '' && $_POST['password'] !== ''){ $login = $db->prepare('SELECT * FROM members WHERE email=? AND password=?'); $login->execute(array( $_POST['email'], sha1($_POST['password']) )); $member = $login->fetch(); if($member){ $_SESSION['id'] = $member['id']; $_SESSION['time'] = time(); header('Location:index.php'); exit(); }else{ $error['login'] = 'failed'; } }else{ $error['login'] = 'blank'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>ログインする</title> </head> <body> <div id="wrap"> <div id="head"> <h1>ログインする</h1> </div> <div id="content"> <div id="lead"> <p>メールアドレスとパスワードを記入してログインしてください。</p> <p>入会手続きがまだの方はこちらからどうぞ。</p> <p>&raquo;<a href="join/">入会手続きをする</a></p> </div> <form action="" method="post"> <dl> <dt>メールアドレス</dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['email'], ENT_QUOTES)); ?>" /> <?php if($error['login'] === 'blank'):?> <p class="error">*メールアドレスとパスワードを入力してください</p> <?php endif;?> <?php if($error['login'] === 'failed'):?>   <p class="error">*ログインに失敗しました。正しくご記入ください</p> <?php endif;?> </dd> <dt>パスワード</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['password'], ENT_QUOTES)); ?>" /> </dd> <dt>ログイン情報の記録</dt> <dd> <input id="save" type="checkbox" name="save" value="on"> <label for="save">次回からは自動的にログインする</label> </dd> </dl> <div> <input type="submit" value="ログインする" /> </div> </form> </div> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html>
guest

回答1

0

エラーモードの設定がされていないのでエラーが表示されていないだけでは?

PHP

1try { 2 $db = new PDO('mysql:dbname=study;host=localhost;charset=utf8','root','root'); 3 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 4}catch(PDOException $e) { 5 die($e->getMessage()); 6}

insert処理自体try中に記載してください

投稿2020/06/30 00:55

yambejp

総合スコア114883

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問