質問: $stmt->fetch(PDO::FETCH_ASSOC); を削除してみたところ、エラー表示なく「接続成功」(コードの20行目)と「成功」(コードの37行目)が表示されました。 ### 補足情報(FW/ツールのバージョンなど)
回答: > > Call to a member function fetch() on bool > > > こちらの意味は分かっていますか? ざくっと訳すと「bool に対して fetch() しようとしてるけど、そんなんないぞ」って事です。 たいていの場合、$stmt に false が入っています。 今回の場合は、直前で query() を動かしているので、 PDO::query > > PDO::query() は、PDOStatement オブジェクトを返します。 失敗した場合は FALSE を返します。 > > > を疑います。 多分、SQL が正しくないのでは? $sql を確認すると良いです。 あと、**pdo の使用方法が全体的に間違っています。** 参考:PHP で MySQL 接続時に必要な知識(最小限版) 最低限 try-catch が適切に稼働する程度の設定は必要です。 また、**パスワードの照合は、今どき、質問にあるような方法は使用しません。** 参考:2018年のパスワードハッシュ 他にも、「バリデーションしようぜ」とか気になるところがあります。 教本が古いのでは?