我是新人。下面是尝试与数据库连接的开始。如果语法不正确,请告诉我,它似乎适用于我的localhost。
我想我可以输入类Database extends Mysqli
,对吗?这将使得Mysqli的方法可以直接访问数据库,而不是通过类本身创建的实例。这会比我做的更好吗?
class Database {
#The variable that stores the database handle
public $db;
#The Database objects's datbase parameters
public $host;
public $user;
public $password;
public $database;
#creates a Database object with the required databases details
public function __construct($host, $user, $password, $database) {
$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->database = $database;
}
#Stores the database handle as a var $db of the Database instance
public function connect() {
if ($this->db = new Mysqli($this->host, $this->user, $this->password, $this->database)) {
if ($this->db->connect_errno) {
echo "No connection could be made <br/>";
} else {
echo "database succesfully connected <br/>";
}
}
}
}
答案 0 :(得分:1)
如果您的class Database
代表数据库句柄,那么它不应该公开:
#The variable that stores the database handle
public $db;
否则你不会封装那个细节,因此根本不需要你的课程。
接下来,当你开始编写课程时,echo
不属于那里:
if ($this->db = new Mysqli($this->host, $this->user, $this->password, $this->database)) {
if ($this->db->connect_errno) {
echo "No connection could be made <br/>";
} else {
echo "database succesfully connected <br/>";
}
}
因为类包含通过返回值而不是通过标准输出返回的方法。相反,你想在这里抛出异常。这也是Mysqli的一个特性,因此,您不需要编写自己的错误处理代码来开始:
在将这些或多或少显而易见的问题放在一边之后,你会问自己是否应该继承mysqli
而不是聚合它。
mysqli
的标准功能,因此我建议完全删除该类,因为代码看起来多余。所以我会说:都没有。我认为您的Database
课程没有理由,因为您可以使用mysqli
代替。