ホームページ >バックエンド開発 >PHPチュートリアル >PHP コードで PDO を使用すると、「致命的エラー: 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 サイトの他の関連記事を参照してください。