对象无法转换为字符串

时间:2016-07-07 10:39:48

标签: php pdo

尝试建立PDO连接时收到此错误消息:

  

dbConnection的对象无法转换为(行)

中的字符串

这是我的代码:

class dbConnection
{
    protected $db_conn;
    public $db_name = "todo";
    public $db_user = "root";
    public $db_pass = "";
    public $db_host = "localhost";

    function connect()
    {
        try {
            $this->db_conn = new PDO("mysql:host=$this->$db_host;$this->db_name", $this->db_user, $this->db_pass);
            return $this->db_conn;
        }
        catch (PDOException $e) {
            return $e->getMessage();
        }
    }
}

错误发生在PDO线上。为了以防万一,我插入了访问connect()方法的代码:

class ManageUsers
{
    public $link;

    function __construct()
    {
        $db_connection = new dbConnection();
        $this->link = $db_connection->connect();
        return $link;
    }

    function registerUsers($username, $password, $ip, $time, $date)
    {
        $query = $this->link->prepare("INSERT INTO users (Username, Password, ip, time1, date1) VALUES (?,?,?,?,?)");
        $values = array($username, $password, $ip, $time, $date);
        $query->execute($values);
        $counts = $query->rowCount();
        return $counts;
    }
}

$users = new ManageUsers();
echo $users->registerUsers('bob', 'bob', '127.0.0.1', '16:55', '01/01/2015');

2 个答案:

答案 0 :(得分:1)

将您的连接设置更改为以下内容:

class dbConnection
{
    protected $db_conn;
    public $db_name = "todo";
    public $db_user = "root";
    public $db_pass = "";
    public $db_host = "localhost";

    function connect()
    {
        try {
            $this->db_conn = new PDO("mysql:host={$this->db_host};{$this->db_name}", $this->db_user, $this->db_pass); //note that $this->$db_host was wrong
            return $this->db_conn;
        }
        catch (PDOException $e) {
            //handle exception here or throw $e and let PHP handle it
        }
    }
}

此外,在构造函数中返回值没有副作用(应由法律起诉)。

答案 1 :(得分:0)

请按照以下代码,在我的服务器上测试并运行正常。

   class Config
   {
    var $host = '';
    var $user = ''; 
    var $password = '';
    var $database = '';  

    function Config()
    {
        $this->host     = "localhost";  
        $this->user     = "root";
        $this->password = "";
        $this->database = "test";       
    }

}

function Database()
{
        $config = new Config();

        $this->host = $config->host;
        $this->user = $config->user;
        $this->password = $config->password;
        $this->database = $config->database;
}

function open()
{

    //Connect to the MySQL server 
    $this->conn = new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->user,$this->password);
    if (!$this->conn) 
    {
       header("Location: error.html");
       exit;
    }

    return true;
}