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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

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

PHP

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

解決済

phpのMySQL SELECT文でエラーが発生する

surasan
surasan

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

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

PHP

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

2回答

0リアクション

1クリップ

255閲覧

投稿2022/08/09 15:49

編集2022/08/09 22:49

前提

PHPでログインページを作っています。
MySQLからデータを取得する処理を実装中に問題に遭遇しました。

実現したいこと

  1. ユーザーがフォームへメールアドレス、パスワードを入力する
  2. xhrでPHPに送信
  3. PHP側で受け取ったメールアドレスをWHERE条件としてMySQLより取得
  4. メールアドレスがデータベースに存在すればパスワードを照合、存在しない・パスワード不一致は同一のエラーを返す

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

ステータスコード500が返され、PHPでのエラーメッセージ表示設定

PHP

<?php ini_set("display_errors", 1); error_reporting(E_ALL);

を行っても表示されないため、トラブルシューティングが出来ず困っています。

新規登録処理用の別の.phpに含まれているINSERT文では正常に処理されます。

該当のソースコード

PHP

function login_check(){ $pdo = new PDO( 'mysql:host=localhost;dbname=database;', 'user', 'password' ); $mail = $_POST['mail']; $password = $_POST['passwd']; try { $stmt = $pdo->prepare('SELECT * FROM account WHERE mail = :mail'); $stmt->bindValue(':mail', $mail, PDO::PARAM_STR); $response = $stmt->execute(); if($response){ $data = $stmt->fetch(); $saved_passwd =$data['password']; if(password_verify($password, $saved_passwd)){ $return = 'match'; }; }else{ $return = 'wrong'; } }catch(PDOException $e){ echo $e->getMessage(); $return = 'error' } finally { $pdo = null; } return $return; }

MySQLへの接続は関数内で行い、戻り値をswitchで分岐させクライアントへレスポンスする、といった構造にしています。

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

phpバージョン:7.0、サーバー:XREA

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/09 15:57依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「問題・課題が含まれていない質問」という指摘を受けました。

2022/08/09 23:12

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

slemntqe

2022/08/09 16:07

「PHP側で受け取ったメールアドレスをWHERE条件としてMySQLより取得」MySQLより何を取得するのですか?
slemntqe

2022/08/09 16:20 編集

「メールアドレスがデータベースに存在すればパスワードを照合、存在しない・パスワード不一致は同一のエラーを返す」"、"は何の意味ですか? 場合によっては違った意味に捉えられるのでわかりやすく書き直して下さい。"・"は何の意味ですか?「または(OR)」という意味ですか「かつ(AND)」という意味ですか?
surasan

2022/08/09 16:19

順番にお答えさせていただきます。 >MySQLより何を取得するのですか? メールアドレスを検索条件として、データベース上に一致するものがあれば、一致する行(カラム)を取得します。 >「または(OR)」という意味ですか「かつ(AND)」という意味ですか? ・メールアドレスがデータベースに存在すればパスワードを照合 ・存在しない、またはパスワード不一致は同一のエラーを返す これで理解いただけましたでしょうか?
slemntqe

2022/08/09 16:28

こちらの記事を参考にしてエラー表示を有効にすることは出来ますか? CORESERVERの記事ですがXREAも同じ業者が提供しているので似た仕様の可能性があります。 https://help.coreserver.jp/faq/php-error/
m.ts10806

2022/08/09 20:00

質問は編集できますので、適宜調整願います。
m.ts10806

2022/08/09 20:06 編集

そういえば、XREAってサーバーのログは確認できませんか? コード上で設定有効にできない仕様の場合、何かしらでエラーログ等を確認する手段はあるかと思います。 また、可能ならローカル環境作って出来上がったものを実際のWebサーバーにアップした方が良いと思いますが・・・(質問のコードの動作確認するのも多くの人はローカル環境だと思います)

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

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

PHP

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