2017-11-18 10 views
0

しばらくの間、私の頭を壁に叩いていました。私は提案された質問のほとんどを読んだ。私はクラスのコンストラクタに私のmysqliの接続を渡し、クラス変数に設定しようとしていますし、取得しています:回復致命的なエラー:回復可能な致命的なエラー:クラスmysqliのオブジェクトを文字列に変換できませんでした

$con=mysqli_connect("abc", "abc", "abc", "abc"); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MariaDB: " . mysqli_connect_error(); 
} 
/* check connection */ 
if ($con->connect_errno) { 
    printf("Connect failed: %s\n", $con->connect_error); 
    exit(); 
} 

$t = new Timer($con); 
// lots of irrelevant code 
unset($t); 

class Timer { 
    private $time = null; 
    private $con; 
    public function __construct($con) { 
     $this->$con = $con; 
     $this->time = time(); 
     echo 'Working - please wait..<br/>'; 
    } 

    public function __destruct() { 
     $basename = basename($_SERVER['PHP_SELF']); 
     $query = "SELECT ScriptID FROM scripts WHERE `ScriptURL` = '$basename';"; 
     $scriptIDResult = mysqli_fetch_assoc(mysqli_query($con, $query)) or die(mysqli_error($con)); 
     $t->scriptID = $scriptIDResult['ScriptID']; 
     $elapsed = (time()-$this->time); 
     echo '<br/>Job finished in '.($elapsed).' seconds.'; 
     $scriptQuery = "UPDATE `scriptruns` SET `ScriptExecutedTime` = '$elapsed', `ScriptRunDate` = NOW() WHERE `ScriptID` = '$scriptID'"; 
     $result = mysqli_query($con, $scriptQuery) or die(mysqli_error($con)); 
    } 
} 

:クラスmysqliののオブジェクトは、文字列

PHPに変換することができませんでしたエラーは、$this->$con = $con;のコンストラクト関数でスローされています。

答えて

1

問題はここにある:それはちょうど誤植である

$this->$con = $con; 

けどさんは何が起こるか見てみましょう。 $this->$conは、$con変数に格納されている$thisのプロパティを意味します。名前を探すと、PHPは$conを文字列に変換しようとします。 $conmysqli__toString()を実装していません)のオブジェクトで、「オブジェクトmysqliクラスを文字列に変換できませんでした」というメッセージが表示されるのはエラーメッセージです。

もちろん、コードは次のようになります。

$this->con = $con; 

ます。また__destruct()にエラーが発生します。 mysqliオブジェクトのように使用する変数$conは設定されていません。デストラクタのどこでも$this->conにする必要があります。

+0

ハハ、とてもシンプルです、ありがとう! – dmikester1

関連する問題

 関連する問題