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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

【ログイン機能】DBに登録されない。

hurozuki
hurozuki

総合スコア46

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

2回答

0評価

0クリップ

367閲覧

投稿2022/03/22 04:49

編集2022/03/24 20:16

イメージ説明
イメージ説明

前提

PHPでログイン機能を作成しています。
エラーメッセージは出ていません。
4項目全て打ってもDBに登録されません。

実現したいこと

フォームに記入した情報をDBに登録したい。

該当のソースコード

index.php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録画面</title> </head> <body> <h2>ユーザー登録フォーム</h2> <form action="register.php" method="POST"> <label for="username">ユーザー名:</label> <input type="text" name="username" id="username"><br> <label for="email">メールアドレス:</label> <input type="email" name="email" id="email"><br> <label for="password">パスワード:</label> <input type="password" name="password" id="password"><br> <label for="password_conf">パスワード確認:</label> <input type="password" name="password_conf" id="password_conf"><br> <input type="submit" value="新規登録"> </form> </body> </html>

register.php

<?php require_once("dbconnect.php"); $err=[]; if(!$username=filter_input(INPUT_POST,"username")){ $err[]="ユーザー名を記入して下さい"; } if(!$email=filter_input(INPUT_POST,"email")){ $err[]="メールアドレスを記入して下さい"; } $password=filter_input(INPUT_POST,"password"); if(!preg_match("/\A[a-z\d]{8,100}+\z/i",$password)){ $err[]="パスワードは英数字8文字以上100文字以下にして下さい"; } $password_conf=filter_input(INPUT_POST,"password_conf"); if($password!==$password_conf){ $err[]="確認用パスワードと異なっています。"; } if(count($err)===0){ $createUser=new CreateUser($_POST); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録完了画面</title> </head> <body> <?php if(count($err)>0): ?> <?php foreach($err as $e): ?> <p><?php echo $e ?></p> <?php endforeach ?> <?php else: ?> <p>ユーザー登録が完了しました</p> <?php endif ?> <a href="index.php">戻る</a> </body> </html>

dbconnect.php

<?php class CreateUser{ public function _construct($userData){ $sql="insert into users(name,email,password)values(?,?,?)"; $username=$userData["username"]; $email=$userData["email"]; $pass=password_hash($userData["password"],PASSWORD_DEFAULT); try{ $pdo=new PDO("mysql:host=localhost;dbname=portfolio2;charset=utf8","root","パスワードです",[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES=>false, ]); $stmt= $pdo->prepare($sql); $stmt->bindValue(1,$username); $stmt->bindValue(2,$email); $stmt->bindValue(3,$pass); $stmt->execute(); }catch(PDOException $e){ echo $e->getMessage() . PHP_EOL; exit; }}} ?>

試したこと

スコープの範囲を確認した。

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

XAMPP,VSCodeを使用

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/03/22 04:52

Exceptionで何も出力していませんし、returnがfalseだったとしても受け取られていないので、そもそも何かあってもエラーが出るような実装になっていません。 エラーを出すような実装に調整して再度確認してみてください。 https://qiita.com/mpyw/items/b00b72c5c95aac573b71
takasima20

2022/03/22 05:07

SQLのvaluesに指定するコードがないようですが、executeになんか指定してるのと関係ありますか?
hurozuki

2022/03/22 05:36

エラー出力するように修正(echo $e->getMessage() . PHP_EOL; exit;) して、再度フォーム入力しましたがエラーメッセージは出ませんでした。 ご指摘ありがとうございます!
hurozuki

2022/03/22 05:38

takasima20さん、 values(?,?,?)⬅これに、$name,$email,$password を当てはめるようにしています。
退会済みユーザー

退会済みユーザー

2022/03/22 05:56

さらっとDB接続パスワードが見えてるので、本番その他では使用しないように。
hurozuki

2022/03/22 06:02

やらかしてしまいました。 パスワード変更しました! ありがとうございます!

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。