今天我試圖將我的函數轉換爲PHP類。 我嘗試了一些基本步驟。PHP和Mysqli OOP - 處理數據庫
<?php
class DataBase {
private $host;
private $user;
private $password;
private $db;
private $mysqli;
function __construct() {
$this->host = "localhost";
$this->user = "root";
$this->password = "";
$this->db = "my_database";
$this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->db);
}
function __destruct() {
$this->mysqli->close();
}
public function query($query, $params = '', $bind_result) {
$stmt = $this->mysqli->prepare($query);
//Need to change this to process the array of params
$stmt->bind_param('i', $params);
$stmt->execute();
//Change this to handle array of bind
$stmt->bind_result($bind_result);
//Loop the result and store it in a temp array
$stmt->fetch();
//Don't print the statement. Just close the statement and return the array.
printf("%s\n", $bind_result);
/* close statement */
$stmt->close();
}
}
?>
我現在要創建另一個類。我在數據庫中創建了一個虛擬表。
<?php
class Dummy {
private $database;
function __construct() {
$this->database = new Database();
}
public function getAllDummy() {
$query = "SELECT name FROM dummy WHERE id = ?";
$this->database->query($query, 1, 'name');
}
}
?>
但我不認爲這是做事情的正確方法。我覺得其中一些是正確的,其中一些是錯誤的。
當我調用query()函數時,是否需要在每個類的構造方法中始終連接數據庫?或者我是否需要將數據庫類更改爲靜態函數?所以我可以調用像Database :: query()這樣的函數。
看來我需要從一開始就創造一切。互聯網中是否已有這種模式? like cakephp,codeigniter
你可以在其他類中使用像「__construct(Database $ db)」這樣的稱爲「依賴注入」的東西;要使用多個參數進行查詢,請查看[this comment](http://www.php.net/manual/en/mysqli-stmt.bind-param.php#104073)。這裏的一些人會推薦使用PDO來擁有更「光滑」的界面。 – Passerby