致命错误:未捕获错误:在字符串

时间:2016-06-21 10:57:37

标签: php oop

将PHP版本更新为7后,我遇到了一些问题和错误...有些错误 - >

  

错误 - > (致命错误:未捕获错误:调用成员函数   prepare()on string);

//这是我的代码

<?php

/** config **/

class dbConnection
{
    protected $db_conn;

    public $db_host = 'localhost';
    public $db_name = 'test';

    public $db_user = 'root';
    public $db_pass = '';

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

&GT;

<?php

    /**  Class Users **/

    class ManageUser{

        public $link;

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

        //Get user
        function GetUsersInfo($username)
        {
            $query = $this->link->prepare("SELECT * FROM `tbl_administrator` WHERE username = '$username' ");
            $query->bindValue(1, $username, PDO::PARAM_STR);
            $query->execute();
            $result = $query->fetchAll(PDO::FETCH_ASSOC);
            return $result;
        }

    }

?>

<?php

    $n = new ManageUser();
    $a = $n->GetUsersInfo('a');
    print_r($a);

?>

1 个答案:

答案 0 :(得分:0)

有可能,您有一个exception,这就是为什么$this->linkstring而不是object的原因。尝试调试此异常。

    catch(PDOException $e){
        var_dump($e);
        return $e->getMessage();
    }

请不要捕获异常以从对象方法返回异常消息。 始终尝试处理异常并重新抛出。在脚本流程结束时处理异常。

    catch(PDOException $e){
        // log exception message, ...
        throw $e;
    }

不要设计返回对象(dbconnection)或字符串(异常消息)的方法这是一个致命的设计。