将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);
?>
答案 0 :(得分:0)
有可能,您有一个exception
,这就是为什么$this->link
是string
而不是object
的原因。尝试调试此异常。
catch(PDOException $e){
var_dump($e);
return $e->getMessage();
}
请不要捕获异常以从对象方法返回异常消息。 始终尝试处理异常并重新抛出。在脚本流程结束时处理异常。
catch(PDOException $e){
// log exception message, ...
throw $e;
}
不要设计返回对象(dbconnection)或字符串(异常消息)的方法这是一个致命的设计。