前提・実現したいこと
$result = $stmt->fetch(PDO::FETCH_ASSOC);が正常に機能するようにコードを書きたいです。
phpで、「ログイン時に送信する情報」と「データベースに保存されている情報」を照合する機能を実装中に、$result = $stmt->fetch(PDO::FETCH_ASSOC);を書くとエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Call to a member function fetch() on bool in C:\xampp\htdocs\making\top.php:36 Stack trace: #0 {main} thrown in C:\xampp\htdocs\making\top.php on line 36
該当のソースコード
php
1<!DOCTYPE html> 2<html lang=ja> 3 <head> 4 <meta charset="utf-8"> 5 <title>top</title> 6 </head> 7 <body> 8 <?php 9 //エラー表示 10 error_reporting(E_ALL); 11 ini_set('display_errors', 'On'); 12 13 // ドライバ呼び出しを使用して MySQL データベースに接続します 14 $dsn = 'mysql:dbname=making;host=localhost'; 15 $user = 'root'; 16 $password = 'root'; 17 18 try { 19 $dbh = new PDO($dsn, $user, $password); 20 echo "接続成功\n<br>"; 21 } catch (PDOException $e) { 22 echo "接続失敗: " . $e->getMessage() . "\n<br>"; 23 exit(); 24 } 25 26 //ログイン情報と登録情報の一致を判断する(ログイン時入力情報と一致する登録情報をデータベースから取得する) 27 if($_POST["name"] != null && $_POST["email"] != null && $_POST["pass"] != null){ 28 $name = $_POST["name"]; 29 $email = $_POST["email"]; 30 $pass = $_POST["pass"]; 31 32 try { 33 $dbh = new PDO($dsn, $user, $password); 34 $sql = "SELECT * FROM users WHERE name = $name AND email = $email AND pass = $pass"; 35 $stmt = $dbh->query($sql); 36 $result = $stmt->fetch(PDO::FETCH_ASSOC); 37 echo "成功"; 38 }catch(PDOException $e) { 39 echo $e->getMessage(); 40 echo "リベンジ"; 41 die(); 42 } 43 44 }else{ 45 echo "不足"; 46 } 47 ?> 48 </body> 49</html> 50
試したこと
エラー表示されている36行目 → $result = $stmt->fetch(PDO::FETCH_ASSOC);
を削除してみたところ、エラー表示なく「接続成功」(コードの20行目)と「成功」(コードの37行目)が表示されました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/26 02:35 編集