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_dump
的dataSet
但错误出现。
阵列(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){ ...
答
在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
类以外
该死的,你救了我的晚上哥们!当我被允许时,我会点击勾号! – vinataba
@vinataba很高兴能帮到你。 *干杯! : - )* –