2014-07-19 73 views
0

今天我试图将我的代码转换为PHP/MySQLi OOP代码。PHP代码转换为PHP/MySQLi OOP

class Database 
{ 
private $host; 
private $user; 
private $password; 
private $db; 
private $mysqli; 

function __construct() 
{ 
    $this->host = "*****"; 
    $this->user = "*****"; 
    $this->password = "******"; 
    $this->db = "*****"; 

    $this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->db); 

    if (mysqli_connect_errno()): 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    endif; 
} 
} 

这是查询的脚本:

include_once("WD_Config/database.php"); 

class Adressen_Db 
{ 
function __construct() 
{ 
    $this->database = new Database(); 
} 

public function selecteer() 
{ 
    $query = "SELECT * FROM wd_adressen WHERE verborgen = 0 ORDER BY naam ASC"; 
    $result = $this->database->mysqli->query($query); 

    return $result; 
} 
} 

这也是我怎么称呼它。

$adressen = new Adressen_Db; 
$adressen_result = $adressen->selecteer(); 

echo "<p>"; 
while ($row = $adressen_result->fetch_assoc()): 
echo "<a href='http://maps.google.com/?q=".$row['voladres']."'  target='_blank'>".$row['naam']."</a> woonachtig op <i>".$row['voladres']."</i><br>"; 
endwhile; 
echo "</p>"; 

我总是得到一个“调用一个非对象的成员函数query()”。不要紧,我特里...

有人可以告诉我为什么这是?

谢谢!

+0

您需要更改为公开。 'private $ mysqli;'到'public $ mysqli;'。 –

+0

'Database :: mysqli'是私人的 – PeeHaa

+0

谢谢戴夫,这确实有效!但不应该$ mysqli总是私人的? –

回答

0

我想,而你肯定需要有$mysqli公共所以它可以在其他的方法来访问,有可能是别的东西,因为错误会像

试图访问私有财产数据库类

或类似的东西,而你的脚本抛出一个非对象调用错误

我觉得你new Adressen_Db;缺少括号:

$adressen = new Adressen_Db(); 
5

类Database中的$mysqli变量声明为private

您只能通过setter和getters访问它。