前提・実現したいこと
PHPの課題で掲示板の作成をしています。
ログイン画面の処理で、入力したID,PASSに一致したユーザーをselect文で呼び出したいです。
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Call to a member function bindParam() on bool in /Applications/MAMP/htdocs/workspace/Project/BBS/login.php:38 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/workspace/Project/BBS/login.php on line 38
該当のソースコード
login.php <?php ini_set('display_errors', "On"); session_start(); //DB接続ファイル読み込み require 'DBConnect.php'; if(isset($_SESSION['USER_ID'])){ header('Location : input.php'); } if(!empty($_POST['login'])){ //エラー変数を空にする。 $err = ""; //$_POST['userID']が空か判定 if($_POST['USER_ID'] === ""){ $err = "「ID」"; } //$_POST['password']が空か判定 if($_POST['USER_PASS'] === ""){ $err .= "「パスワード」"; } } //$errが空か判定 if($err === ""){ $dbh = new DBConnect(); $stmt = $dbh->getDBH()->prepare('SELECT * FROM ARTICLE WHERE USER_ID = :USER_ID AND USER_PASS = :USER_PASS'); $stmt->bindParam(':USER_ID', $_POST['USER_ID'], PDO::PARAM_STR); $stmt->bindParam(':USER_PASS', $_POST['USER_PASS'], PDO::PARAM_STR); }else{ $err .= "が入力されていません"; } ?> <h1>掲示板</h1> <hr> <p>あなたのパスワードを入力してログインしてください。</p> <form action="login.php" method="POST"> ID:<input type="text" name="USER_ID" value=""><br> PASS:<input type="password" name="USER_PASS" value=""><br> <input type="submit" name="login" value="ログイン" /> </form> DBConnect.php <?php class DBConnect{ public function getDBH(){ $dsn = 'mysql:host=localhost;dbname=SLJ;charset=utf8mb4'; $user = 'root'; $pass = 'sljslj'; try{ $dbh = new PDO($dsn, $user, $pass); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); return $dbh; }catch(PDOException $e){ die ('エラー:' . $e->getMessage()); } } }
試したこと
ここに問題に対して試したことを記載してください。
bindParam
bindValue
$select_sth->execute(['USER_ID' => $_POST['USER_ID']], ['USER_PASS' => $_POST['USER_PASS']]);
等の書き方を試しましたが、全て同じエラーを履きました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー