- ベストアンサー
PHPのコードでエラーが発生し困っています
- 現在の書籍で学んでいるログイン機能の基礎について、PHPのコードを実行している際にエラーが発生しました。エラーメッセージは「Call to a member function bindParam() on a non-object in C:\xampp\htdocs\tennis\login.php on line 15」と表示されます。
- エラーの原因として、コード内の15行目の「$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);」に問題がある可能性が考えられます。
- このエラーを解決するためには、PDOオブジェクトに正しくバインドする必要があります。正しいバインドを行って、再度実行してみてください。また、接続情報やテーブル名なども確認してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エラーを読むと… >Fatal error: Call to a member function bindParam() on a non-object 「オブジェクトではないのに、bindParamなんてメンバ関数を呼んでるよ」というエラーなわけですね。 つーことは、15行目の$stmtがオブジェクトではないという事。 それじゃ$stmtは何かっつーと、さかのぼって14行目で $stmt = $db->prepare(~); と代入しているので、prepareで実行した結果が正しくオブジェクトを返していないと考えられます。 それじゃ14行目のどこに問題があるかっつーと… パッと見、問題がありそうには思えない あるいはSQLの… SELECT * FROM users WHERE name=:name AND password=:pass に問題があるのかも知んないな。 usersってテーブルほんとにあるのかよ、あるいはnameやpasswordってフィールド名が正しいのか?という問題なのかも知れない。 もしそうだとすると、このプログラムコードをいくら眺めていても、誰にも判るわけがない。 とりあえずそんな感じで。
その他の回答 (2)
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 多分、DB接続でエラーになってるかと・・・。 }catch(PDOException $e){ ここですが、 PDO::ERRMODE_SILENT がデフォルト値です・・・。 PDO::ERRMODE_EXCEPTION を設定すれば、多分エラーになってるかと・・・。
お礼
回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。
- t_ohta
- ベストアンサー率38% (5253/13739)
そのエラーはprepareに失敗した時に出るエラーです。 多分14行目と15行目の間で var_dump($stmt); をすると false と出てくると思います。 ありがちなのはテーブル名やカラム名のタイプミスです。 DBの定義を確認してみましょう。
お礼
回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。
お礼
回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。