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

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

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

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

phpMyAdmin

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

PHP

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

Q&A

解決済

2回答

546閲覧

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

surasan

総合スコア13

MySQL

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

phpMyAdmin

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

PHP

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

0グッド

1クリップ

投稿2022/08/09 15:49

編集2022/08/09 22:49

前提

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

実現したいこと

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

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

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

PHP

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

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

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

該当のソースコード

PHP

1function login_check(){ 2 $pdo = new PDO( 3 'mysql:host=localhost;dbname=database;', 4 'user', 5 'password' 6 ); 7 $mail = $_POST['mail']; 8 $password = $_POST['passwd']; 9 10 try { 11 $stmt = $pdo->prepare('SELECT * FROM account WHERE mail = :mail'); 12 $stmt->bindValue(':mail', $mail, PDO::PARAM_STR); 13 $response = $stmt->execute(); 14 if($response){ 15 $data = $stmt->fetch(); 16 $saved_passwd =$data['password']; 17 if(password_verify($password, $saved_passwd)){ 18 $return = 'match'; 19 }; 20 }else{ 21 $return = 'wrong'; 22 } 23 24 }catch(PDOException $e){ 25 echo $e->getMessage(); 26 $return = 'error' 27 } finally { 28 $pdo = null; 29 } 30 31 return $return; 32}

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

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

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

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

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

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

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

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

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サーバーにアップした方が良いと思いますが・・・(質問のコードの動作確認するのも多くの人はローカル環境だと思います)
guest

回答2

0

自己解決

皆さんありがとうございました。

単純な問題で、$return = 'error'にセミコロンが付いていませんでした。

投稿2022/08/09 23:13

surasan

総合スコア13

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

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

0

$return = 'error'

ここに終端がないです。
eclipseなどの開発ツールで検出できるレベルの文法ミスです。
イメージ説明
※上記画像はpaiza.io

投稿2022/08/09 23:11

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問