• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpのコードでうまく動かず困っています)

PHPのコードでエラーが発生し困っています

このQ&Aのポイント
  • 現在の書籍で学んでいるログイン機能の基礎について、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オブジェクトに正しくバインドする必要があります。正しいバインドを行って、再度実行してみてください。また、接続情報やテーブル名なども確認してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • coai
  • ベストアンサー率50% (152/301)
回答No.1

エラーを読むと… >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ってフィールド名が正しいのか?という問題なのかも知れない。 もしそうだとすると、このプログラムコードをいくら眺めていても、誰にも判るわけがない。 とりあえずそんな感じで。

ottu555
質問者

お礼

回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。

その他の回答 (2)

回答No.3

こんにちは。 多分、DB接続でエラーになってるかと・・・。 }catch(PDOException $e){ ここですが、 PDO::ERRMODE_SILENT がデフォルト値です・・・。 PDO::ERRMODE_EXCEPTION を設定すれば、多分エラーになってるかと・・・。

ottu555
質問者

お礼

回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。

  • t_ohta
  • ベストアンサー率38% (5253/13739)
回答No.2

そのエラーはprepareに失敗した時に出るエラーです。 多分14行目と15行目の間で var_dump($stmt); をすると false と出てくると思います。 ありがちなのはテーブル名やカラム名のタイプミスです。 DBの定義を確認してみましょう。

ottu555
質問者

お礼

回答ありがとうございました 作成したデータベースと読み込んでるデータベースに違いがあったみたいです。

関連するQ&A