OOP-php - 无法从数据库中取回数据

问题描述:

我是一个PHP中使用OOP模型的新手。我一直试图从数据库中检索数据,但与私有相关的东西让我陷入困境。 这是我的代码。OOP-php - 无法从数据库中取回数据

<?php 

require ("UserData.php"); 

class Database{ 

    public function getUser($sql){ 

    include ("includes/connect.php"); 
     $statement = $conn->prepare ($sql); 
     $statement->execute(); 

     while ($row = $statement->fetch()) { 

      $dataSet[] = new UserData($row); 
     } 

     if (!empty($dataSet)) { 
      return $dataSet; 

     }else{ 
      die(); 
     } 
    } 
} 
?> 

第二个文件

<?php 

class UserData 
{ 
    private $user_id, $phone,$name,$address; 

    public function _construct($dbrow){ 

     $this->user_id = $dbrow['user_id']; 
     $this->name = $dbrow['name']; 
     $this->phone = $dbrow['phone']; 
     $this->address = $dbrow['address']; 
    } 
    public function getUserId(){ 
     return $this->user_id; 
    } 
    public function getUserName(){ 
     return $this->name; 
    } 
    public function getUserPhone(){ 
     return $this->phone; 
    } 
    public function getUserAddress(){ 
     return $this->address; 
    } 
} 
?> 

,最后一个

<?php require ("Database.php"); ?> 

<html> 
<head> 
    <title>OOP</title> 
</head> 
<body> 
    <?php 
    include("includes/connect.php"); 

    $db = new Database(); 

    $dataSet = $db -> getUser ("SELECT * from user"); 


    if ($dataSet) { 

     foreach ($dataSet as $data) { 
      echo "<p>"; 
      echo "ID" .$data->getUserId()."<br />"; 
      echo "Name" .$data->getUserName()."<br />"; 
      echo "Phone" .$data->getUserPhone()."<br />"; 
      echo "Address" .$data->getUserAddress()."<br />"; 
      echo "</p>"; 
     } 

    }else{ 
     echo "no result found"; 
    } 
    ?> 
</body> 
</html> 

好吧,我试图var_dumpdataSet但错误出现。

阵列(2){[0] =>对象(的UserData)#5(4){ [ “USER_ID”: “的UserData”:私人] => NULL [ “电话”: “的UserData”:私人] => NULL [“name”:“UserData”:private] => NULL [“address”:“UserData”:private] => NULL} [1] => object(UserData)#6(4) {“user_id”:“UserData”:private] => NULL [“phone”:“UserData”:private] => NULL [“name”:“UserData”:private] => NULL [“address” :“UserData”:private] => NULL}}

所以任何人都可以告诉我哪些点使代码转储?

一切进展顺利,除了这条线,

public function _construct($dbrow){ ... 
       ^^^^^^^^^^ it should be double underscore, not single 

UserData类的构造函数方法是错误的。它应该是,

public function __construct($dbrow){ ... 
+0

该死的,你救了我的晚上哥们!当我被允许时,我会点击勾号! – vinataba

+0

@vinataba很高兴能帮到你。 *干杯! : - )* –

在PHP 5.6.0+,你可以使用魔法马托__debugInfo()

class UserData 
{ 
    public function __debugInfo() { 
     return ['user_id' => $this->user_id, 'phone' => $this->phone, 'name' => $this->name, 'address' => $this->address]; 
    } 
} 

或使变量公开的,这时候你有一个像getUserId

方法或创建方法不打算倾倒,如:

class UserData 
{ 
    public function dump() { 
     var_dump($this); 
    } 
} 

BTW类Database方法getUser你包括在方法调用所有的时间,速战速决:使用require_once代替include,更好的将是调用include/require/require_once类以外