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

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

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

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

PHP

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

MAMP

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

Q&A

解決済

1回答

327閲覧

phpファイルをブラウザで表示できない

twsoccer15

総合スコア12

phpMyAdmin

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

PHP

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

MAMP

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

0グッド

0クリップ

投稿2018/12/30 02:59

編集2018/12/30 04:12

前提・実現したいこと

現在ユーザー登録システムを作成しているのですがphpファイルで作成したコードが反映されません。

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

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\MAMP\htdocs\sample\index.php:86 Stack trace: #0 C:\MAMP\htdocs\sample\index.php(86): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\sample\index.php on line 86

###ソースコード

```<?php error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する ini_set('display_errors','On'); //画面にエラーを表示させるか //1.post送信されていた場合 if(!empty($_POST)){ define('MSG01','入力必須です'); define('MSG02','Emailの形式で入力してください'); define('MSG03','パスワード(再入力)があっていません。'); define('MSG04','半角英数字のみご利用いただけます'); define('MSG05','6文字以上で入力してください'); $err_flg = false; $err_msg = array(); //2.フォームが入力されていない場合 if(empty($_POST['email'])){ $err_msg['email'] = MSG01; } if(empty($_POST['pass'])){ $err_msg['pass'] = MSG01; } if(empty($_POST['pass_retype'])){ $err_msg['pass_retype'] = MSG01; } if(empty($err_msg)){ $email = $_POST['email']; $pass = $_POST['pass']; $pass_re = $_POST['pass_retype']; //3.emailの形式ではない場合 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-z0-9._-]+)+$/",$email)){ $err_msg['email'] = MSG02; } //4.パスワードとパスワード再入力があっていない場合 if($pass !== $pass_re){ $err_msg['pass'] = MSG03; } if(empty($err_msg)){ //5.パスワードとパスワード再入力が半角英数字でない場合 if(!preg_match("/^[a-zA-Z0-9]+$/", $pass)){ $err_msg['pass'] = MSG04; }elseif(mb_strlen($pass) < 6){ //6/パスワードとパスワード再入力が6文字以上ではない場合 $err_msg['pass'] = MSG05; } if(empty($err_msg)){ //DBへの接続準備 $dsn = 'mysql:dbname=php_sample01;host=localhost;charset=utf8'; $user = 'root'; $password = 'root'; $options = array( //SQL実行失敗時に例外をスロー PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //デフォルトフェッチモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //バッファードクエリを使う(一度に結果セットをすべて取得し、サーバー負担を軽減) //SELECTで得た結果に対してもrowcountメゾットを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); //PDOオブジェクト生成(DBへ接続) $dbh = new PDO($dsn, $user, $password, $options); //SQL文(クエリー作成) $stmt = $dbh->prepare('INSERT INTO users (email,pass,login_time) VALUES (:email,:pass,login_time)'); //プレースホルダに基本セットし、SQL文を実行 $stmt->execute(array(':email' => $email, ':pass' => $pass, ':login_time' => date('Y-m-d H:i:s'))); header("Location:mypage.php");//マイページへ } } } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ホームページのタイトル</title> <style> body{ margin: 0 auto; padding: 150px; width: 25%; background: #fafafa; } h1{ color: #545454; font-size: 20px;} form{ overflow: hidden; } input[type="text"]{ color: #545454; height: 60px; width: 100%; padding: 5px 10px; font-size: 16px; display: block; margin-bottom: 10px; box-sizing: border-box; } input[type="submit"]{ border: none; padding: 15px 30px; margin-bottom: 15px; background: #3d3938; color: white; float: right; } input[type="submit"]:hover{ background: #111; cursor: pointer; } a{ color: #545454; display: block; } a:hover{ text-decoration: none; } .err_msg{ color: #ff4d4b; } </style> </head> <body> <h1>ユーザー登録<h1> <form action="" method="post"> <span class="err_msg"><?php if(!empty($err_msg['email'])) echo $err_msg['email']; ?></span> <input type="text" name="email" placeholder="email"> <span class="err_msg"><?php if(!empty($err_msg['pass'])) echo $err_msg['pass']; ?></span> <input type="text" name="pass" placeholder="パスワード"> <span class="err_msg"><?php if(!empty($err_msg['pass_retype'])) echo $err_msg['pass_retype']; ?></span> <input type="text" name="pass_retype" placeholder="パスワード(再入力)"> <input type="submit" value="送信"> </form> <a href="mypage.php">マイページへ</a> </body> </html>

試したこと

コードを修正してみましたが反映されず。 ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/12/30 03:07

ソースコードって、ソースコードって箇所に書くものじゃないかなぁ。見づらい。
twsoccer15

2018/12/30 03:35

ソースコード箇所に変えたのですが改善されていますでしょうか。初めての利用で分からないことが多くありますのでこれからもご指摘のほどよろしくお願いします。
kei344

2018/12/30 03:43

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
退会済みユーザー

退会済みユーザー

2018/12/30 06:32

```(バッククオート3つ)ですぐ改行を入れると良いよ。 あるいは、「```php」とすればphpとして表示してくれるけども。
guest

回答1

0

ベストアンサー

$stmt = $dbh->prepare('INSERT INTO users (email,pass,login_time) VALUES (:email,:pass,login_time)');

$stmt = $dbh->prepare('INSERT INTO users (email,pass,login_time) VALUES (:email,:pass,:login_time)');

投稿2018/12/30 03:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問