2017-12-28 57 views
-1

解決方法が見つかりません。欲求は着実に成長する。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であるので、あなた フランク

+1

動作するように機能するように接続オブジェクトを渡す必要があります。それをパラメータとして渡す必要があります。 – iainn

+0

セキュリティ上の懸念があるため、おそらくそのデータベースに接続するための資格情報を変更する必要があります。上記のコードでユーザー、パス、データベース名が実際であると仮定します。 –

+0

関数の後にAssignPerson($ objectID、$ type = 'actor'){.... add .... global $ connection2MySQL; – halojoy

答えて

0

$connection2MySQLは、関数の外で宣言されて感謝しています。

あなたはそれは `$ connection2MySQL`がその関数でスコープ内にあるようには見えません正しく

+0

ありがとう!あなたの助けを借りて作業し、新しいことを学びました!実際に私は間違った焦点で探していた...そしてはい、それは前にあなたが参照した記事で答えられた!再度ありがとう、フランク –

関連する問題