ホームページ >バックエンド開発 >PHPチュートリアル >PHP コードで PDO を使用すると、「致命的エラー: null でのメンバー関数 prepare() の呼び出し」が発生するのはなぜですか?

PHP コードで PDO を使用すると、「致命的エラー: null でのメンバー関数 prepare() の呼び出し」が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 16:32:02732ブラウズ

Why am I getting a

「致命的なエラー: null でのメンバー関数 prepare() の呼び出し」の修正

概要

PHP オブジェクト指向のアプローチでは、「致命的なエラー: null でのメンバー関数 prepare() の呼び出し」が発生するとイライラすることがあります。このエラーは、PHP スクリプトが、適切にインスタンス化または初期化されていないオブジェクトのメソッド (この場合は prepare() メソッド) にアクセスしようとしていることを示します。

問題分析

質問に記載されているエラーは、Category クラスの prepare() メソッドが呼び出されたときに $pdo 変数が null であることを示唆しています。これは、データベースへの接続とデータベースとの対話に使用される PDO オブジェクトがグローバル スコープで作成されていないことを示します。

解決策

エラーを解決するには、PDO オブジェクト適切に初期化され、データベースに接続されている必要があります。次のコードは、関数またはクラス定義の外側のスクリプトの先頭に追加できます。

<code class="php">$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);</code>

localhost をデータベース サーバーの名前に置き換え、test をデータベース名に置き換え、$user をデータベースに置き換えます。ユーザー名、$pass とデータベースのパスワード。

このコードは、新しい PDO オブジェクトを作成し、データベースに接続します。これで、Category クラス内のすべてのメソッドで $pdo 変数が使用できるようになり、エラーが発生することなく prepare() メソッドを呼び出すことができます。

補足

1.グローバル スコープ:
Category クラス内のすべてのメソッドにアクセスできるようにするには、$pdo 変数をグローバル スコープで宣言する必要があります。クラス内で定義されたメソッドは、グローバルに宣言された変数、またはメソッドに引数として渡された変数にのみアクセスできます。

2.エラーの原因:
質問に示されているコードには、エラーが発生する行が含まれていません。したがって、エラーの原因は、prepare() メソッドの呼び出し時の $pdo の null 値であると推測することしかできません。

3.クラスメソッドの初期化:
Category クラスのメソッド fetch_all() と fetch_data() はどちらも $pdo 変数に依存するため、$pdo 変数がグローバル スコープで正常に初期化された後にのみ呼び出す必要があります。 .

以上がPHP コードで PDO を使用すると、「致命的エラー: null でのメンバー関数 prepare() の呼び出し」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。