2013-08-23 22 views
0

我遇到了一个问题,我试图从数据库连接类中获取用于查询的数据库链接,但分配显示它是一个对象而不是我需要运行查询的mysqli链接。我收到错误:“PHP警告:mysqli_query()期望参数1是mysqli,给定的对象...”。如何正确地从构造函数中提取“type”mysqli

这里是我的代码为我的DB连接类:

class DB_Connect { 

function __construct() { 

} 

function __destruct() { 

} 
public function connect() { 

    $con = mysqli_connect('localhost', 'user', 'password','database') or die("Error " . mysqli_error($con)); 
//var_dump($con); 
if (!$con) { 
    throw new Exception('Could not connect to database server'); 
} else { 
    return $con; 
} 
} 

这里是我的代码为DB功能:

class DBfns { 

private $db; 

function __construct() { 
    require_once 'DB_Connect.php'; 
    // connecting to database 
    $this->db = new DB_Connect(); 
    $this->db->connect(); //Needs to be changed to mysqli object 
    var_dump($this->db); //Currently showing as "object(DB_Connect)#2 (0) {}" 

} 

// destructor 
function __destruct() { 

} 
public function getUser($uname) { 
$res = mysqli_query($this->db, "SELECT user_id FROM users WHERE uname = '$uname' "); 
//var_dump($this->db); 

} 
} 

预先感谢您的帮助!

回答

0

你需要做更多这样的:

class DB_Connect { 

    private $connection; 

    public function __construct() { 

     $this->connection = mysqli_connect('localhost', 'user', 'password','database') or die("Error " . mysqli_error($con)); 

     if (!$this->connection) { 
      throw new Exception('Could not connect to database server'); 
     } 
    } 

    public function getConnection() { 
     return $this->connection; 
    } 
} 

然后在DBfns

$this->db = new DB_Connect(); 

后来

$res = mysqli_query($this->db->getConnection(), "sql"); 
+0

看起来长篇大论有点 –

+0

呀它上校。这里有很多改进的余地,但是基本概念的解释并没有完全消除原代码。 – Mchl

+0

可能是'$ this-> db'会是更好的选择吗? –

相关问题