2017-11-18 407 views
0

将我的头撞在墙上一会儿。我也阅读了大部分建议的问题。我想通过我的mysqli连接到类构造器并将其设置为一个类变量,我得到:可恢复致命错误:类对象的mysqli不能转换成字符串可恢复的致命错误:类mysqli的对象无法转换为字符串

PHP:

$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)); 
    } 
} 

构造函数中出现错误:$this->$con = $con;

回答

1

的问题是在这里:

$this->$con = $con; 

它只是一个错字,但让我们看看会发生什么。 $this->$con表示$this的财产,其名称存储在$con变量中。寻找一个名字,PHP试图将$con转换为一个字符串; $con是类mysqli(即不执行__toString())的对象,这就是为什么它会触发“类mysqli的对象无法转换为字符串”错误消息。

显然,代码应为:

$this->con = $con; 

也将在__destruct()出现错误。您使用的像mysqli对象的变量$con未设置。在析构函数中无处不在应该是$this->con

+0

哈,太简单了,非常感谢! – dmikester1

相关问题