连接到数据库时出错

时间:2015-02-07 13:35:28

标签: php mysql

我正在使用php开发一个Web应用程序。我已经创建了一个我将访问的数据库类。现在在一个新文件中我正在访问该类,但我收到错误:

!) Catchable fatal error: Object of class DbMain could not be converted to string in C:\wamp\www\baapdevelopers\DBMain.php on line 23

代码

<?php
class DbMain{
    private $host = 'localhost';
    private $dbname = 'test';
    private $username = 'root';
    private $password = '';

    public $con;

    function __construct(){
        $this->connect();
    }// this is the main constructor used for initializing the database

    function connect(){
        try{
            $this->con = new PDO("mysql:host=$this-host;dbname=$this->dbname",$this->username, $this->password);
            $this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        }catch(PDOException $e){
            echo 'We\'re sorry but there was an error while trying to connect to the database';
            file_put_contents('connection.errors.txt', $e->getMessage().PHP_EOL,FILE_APPEND);
        }
    }
}
/* Test.php */

//include_once("DBMain.php");
$db = new DbMain();
?>

我不知道为什么会出现这个错误

1 个答案:

答案 0 :(得分:3)

在这一行:

$this->con = new PDO("mysql:host=$this-host;dbname=$this->dbname",$this->username, $this->password);

当您在字符串中使用$this->dbname时,它只会将$this视为变量,因此会尝试转换$this(这实际上是DbMain类的实例)到一个字符串。这就是错误消息告诉你的。

相反,您应该使用花括号({$this->dbname})转义字符串中的复杂变量名称。然后你的代码变成:

$this->con = new PDO("mysql:host={$this->host};dbname={$this->dbname}",$this->username, $this->password);

可以找到有关此概念的更多信息here