[英]recommended way of fetching results in database [OOP-PHP & MySQLi]
[英]OOP-php - Can not retrive data from database
我是PHP的OOP模型的新手。 我一直在嘗試從數據庫中檢索數據,但與私人相關的東西讓我陷入困境。 這是我的代碼。
<?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
但錯誤顯示出來。
array(2){[0] => object(UserData)#5(4){[“user_id”:“UserData”:private] => NULL [“phone”:“UserData”:private] => 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+中,您可以使用magic mathod __debugInfo()
class UserData
{
public function __debugInfo() {
return ['user_id' => $this->user_id, 'phone' => $this->phone, 'name' => $this->name, 'address' => $this->address];
}
}
或者使變量成為公共的,當你有像getUserId
這樣的方法時,這是getUserId
或創建轉儲方法如:
class UserData
{
public function dump() {
var_dump($this);
}
}
btw in class Database
方法getUser
你在調用方法時一直包含,快速修復:使用require_once
而不是include
,更好的是在類外調用include
/ require
/ require_once
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.