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

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

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

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

Q&A

解決済

1回答

3087閲覧

mysqlにアクセス出来ません。(ユーザー名とパスワードは整合取れています。)

Tomoaki_Fukuda

総合スコア75

PHP

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

0グッド

1クリップ

投稿2015/10/20 19:01

下記の「check.php」において、データベースに接続しておりますが、エラーメッセージとして「SQLSTATE[HY000] [1045] Access denied for user 'tomoaki'@'localhost' (using password: YES)」という文が表示されてしまいます。

もちらん、データベース側での「特権をチェックする」からユーザーとパスワードは一致させているのですが・・・。
推測される原因と対策をご教示頂けますと幸いです。

chekc.php

php

1コード
<?php $user = "tomoaki"; $pass = "tf6287"; session_start(); $name = $_POST['name']; $mail = isset($_POST['mail']); $pass = isset($_POST['pass']); try{ //1. 接続します $dbh = new PDO('mysql:host=localhost;dbname=loginpage; charset=utf8', $user, $pass); //3.データ登録SQL作成 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO users (name, mail, pass) VALUES (?, ?, ?)"; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $name, PDO::PARAM_STR); $stmt->bindValue(2, $mail, PDO::PARAM_STR); $stmt->bindValue(3, $pass, PDO::PARAM_STR); $status = $stmt->execute(); $dbh = null; }catch( Exception $e ) { // PDOException でキャッチできなかった例外はこちらで処理。 echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; die(); } if(!isset($_SESSION['ドットインストール'])){ header('Location: index.php'); exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <form action="thanks.php" method="post"> <dl> <dt>ユーザー名</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['name'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['mail'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>パスワード</dt> <dd> 【表示されません】 </dd> </dl> <div><a href="index.php?action=rewrite">&laquo;&nbsp;書き直す</a> <input type="submit" value="登録する"></div> </form> </body> </html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

MySQLの認証はユーザ名とパスワードの他に接続元もチェックします。
その際にlocalhostは特別扱いされるので個別に指定が必要です。

参考: MySQL ユーザのホストをワイルドカードで指定してもlocalhostは含まれない

投稿2015/10/20 21:09

shiena

総合スコア1825

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

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

Tomoaki_Fukuda

2015/10/21 12:19

ご回答誠にありがとうございました。 ご参考で記載頂いたページも拝見致しましたが、具体的にはコードのどの部分を修正すれば良いかアドバイス頂けませんでしょうか?
shiena

2015/10/21 12:44

コードの問題ではないので修正する部分はありません。 MySQLのユーザ権限の設定が適切ではないのが問題です。 ユーザ名とパスワードは同じでよいのでホストがlocalhostのユーザを追加してください。 このホストは接続を許可するMySQLクライアントの事なのです。 また、MySQLのユーザはホスト、ユーザ名、パスワードの3つで一意なユーザと識別しますのでホストだけが事なるユーザを追加することができます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問