解決方法が見つかりません。欲求は着実に成長する。PHP - 致命的なエラー:キャッチされていないエラー:ヌルのメンバ関数query()を呼び出す
問題:Webページを新しいプロバイダに転送してから、mysqlインターフェイス用のoopアプローチが必要なすべてのsqlコマンドラインをリセットしてみます。これは正常に動作します。しかし、私が働くことができない部分があります。 init.phpから
<?php
include 'scripts/init.php';
...
$cameraString = AssignPerson($movieID, 'camera');
?>
重要なビットです:
<?php
session_start();
include 'scripts/connect2SQL.php';
include 'scripts/logInOut.php';
include 'scripts/classes_functions.php';
?>
connect2SQL.phpだから
<?php
$connection2MySQL = mysqli_connect( "localhost" , "***" , "***", "***");
mysqli_query($connection2MySQL , "SET CHARACTER SET 'utf8'");
mysqli_query($connection2MySQL , "SET SESSION collation_connection ='utf8_unicode_ci'");
?>
変数$読み込むと呼ばれるPHPファイルのmovie.phpは次のようになりますconnection2MySQLはデータベースへのoop接続を表します。
機能AssignPerson($ movieID、 'camera'); movie.php内のクラスファイルはclasses_functions.phpで定義されています。ここでは、基本的なスニペットは、ブラウザで起動します
function AssignPerson($objectID, $type = 'actor') {
$memoryString = '';
// THAT FOLLOWING LINE IS NOT WORKING :::
$persons = $connection2MySQL->query("SELECT * FROM actors2movies");
if (mysqli_num_rows($persons)) {
while ($person = mysqli_fetch_assoc($persons)) {
$personID = $person['personeID'];
$memoryString .= $person['personName'];
}
}
return $memoryString;
}
エラーメッセージがどのように見えるされています
Fatal error: Uncaught Error: Call to a member function query() on null in /var/www/web26777278/html/filmstadt-quedlinburg/scripts/classes_functions.php:173 Stack trace: #0 /var/www/web26777278/html/filmstadt-quedlinburg/movie.php(354): AssignPerson('800', 'director') #1 {main} thrown in /var/www/web26777278/html/filmstadt-quedlinburg/scripts/classes_functions.php on line 173
ここでの問題は、私がの行を削除したときにということであり、クエリ(と以下のもの)、プログラムは動作します。したがって、エラーは上記のi行になければなりません。一方、私がその行をmovie.phpに直接コピーすると、その行は機能します!したがって、PHPファイルのカプセル化のものを他のものに組み込む必要があります。
classes.phpでSQL接続のinclude行を繰り返す必要があるかどうかを確認しました。私はまた、括弧が忘れられているかどうか、データベーステーブルのスペルミスやそのようなものがあるかどうかを調べました。自分自身を助けることはできません。
私は別の場所で問題を探すことができますか?
挨拶とは、それが関数内でnullであるので、あなた フランク
動作するように機能するように接続オブジェクトを渡す必要があります。それをパラメータとして渡す必要があります。 – iainn
セキュリティ上の懸念があるため、おそらくそのデータベースに接続するための資格情報を変更する必要があります。上記のコードでユーザー、パス、データベース名が実際であると仮定します。 –
関数の後にAssignPerson($ objectID、$ type = 'actor'){.... add .... global $ connection2MySQL; – halojoy