今天我們來聊一聊PHP封裝中使用的MySQL, MySQL是目前最為流行的數據庫管理系統之一,而PHP是一個強大的服務器端腳本語言,為了更好的操作和管理MySQL,許多PHP開發者將這兩者結合起來使用。接下來,我們將詳細了解PHP與MySQL如何封裝。
我們都知道,在PHP中操作MySQL需要用到MySQL的函數,而在使用這些函數時,有時需要反復定義變量、進行數據庫連接等重復性工作。這就需要使用類庫進行封裝操作。現在,我們以簡單的增、刪、改、查作為例子,讓我們探討一下PHP中的MySQL操作。
首先,我們來看一下連接數據庫的代碼:
class Db
{
private $host;
private $user;
private $pwd;
private $database;
private $charset;
private $port;
private static $instance;
private $link;
private function __construct(array $config)
{
$this->host = $config['DB_HOST'];
$this->user = $config['DB_USER'];
$this->pwd = $config['DB_PWD'];
$this->database = $config['DB_DATABASE'];
$this->port = $config['DB_PORT'];
$this->charset = $config['DB_CHARSET'];
$this->link = mysqli_connect($this->host, $this->user, $this->pwd, $this->database, $this->port);
mysqli_set_charset($this->link, $this->charset);
}
public static function getInstance(array $config)
{
if (!self::$instance instanceof self) {
self::$instance = new self($config);
}
return self::$instance;
}
public function __clone()
{
trigger_error('Clone is not allowed!', E_USER_ERROR);
}
public function escape($str)
{
return mysqli_real_escape_string($this->link, $str);
}
public function insert($table, array $data)
{
$keys = implode(',', array_keys($data));
$values = implode(',', array_map([$this, 'escape'], $data));
$sql = "INSERT INTO {$table}({$keys}) VALUES ({$values})";
return $this->query($sql);
}
public function delete($table, $where)
{
$sql = "DELETE FROM {$table} WHERE {$where}";
return $this->query($sql);
}
public function update($table, $set, $where)
{
$sql = "UPDATE {$table} SET {$set} WHERE {$where}";
return $this->query($sql);
}
public function select($table, $where, $field = '*', $order = '', $limit = '')
{
$where = $where ? " WHERE {$where}" : '';
$order = $order ? " ORDER BY {$order}" : '';
$limit = $limit ? " LIMIT {$limit}" : '';
$sql = "SELECT {$field} FROM {$table}{$where}{$order}{$limit}";
return $this->fetchAll($this->query($sql));
}
public function query($sql)
{
$result = mysqli_query($this->link, $sql);
if ($result === false) {
throw new Exception(mysqli_error($this->link) . "\r\n" . "SQL: " . $sql);
}
return $result;
}
public function fetchAll($result)
{
$rows = [];
while ($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
}
public function close()
{
mysqli_close($this->link);
}
}
上面這段代碼是一個Db類,負責封裝了對MySQL的基本操作。需要注意的是,在使用這個類時,需要先實例化它。$config = [
'DB_HOST' =>'127.0.0.1',
'DB_USER' =>'root',
'DB_PWD' =>'root',
'DB_DATABASE' =>'demo',
'DB_PORT' =>3306,
'DB_CHARSET' =>'utf8'
];
$db = Db::getInstance($config);
有了這個類以及實例化它的對象,我們就可以方便地進行數據庫操作,接下來,讓我們以增、刪、改、查為例,來具體看一下怎么使用。
首先,我們來看一下增加數據的代碼:$data = [
'username' =>'Tom',
'age' =>20,
'address' =>'NewYork'
];
$result = $db->insert('user', $data);
將要添加的數據寫入一個數組中后,調用insert()方法即可添加數據到MySQL。
接下來,我們來看一下刪除數據的代碼:$where = "id = '1'";
$result = $db->delete('user', $where);
需要注意的是,這里的$where中的條件要根據自己的實際情況更改。
接下來,我們來看一下修改數據的代碼:$set = "username = 'Doe'";
$where = "id = '2'";
$result = $db->update('user', $set, $where);
與刪除數據類似,也需要根據實際情況更改$set和$where。
最后,我們來看一下查詢數據的代碼:$where = "age >18";
$field = "id, username";
$result = $db->select('user', $where, $field);
print_r($result);
這里的$field表示要查詢的字段,可以根據實際情況進行更改。$where參數同樣也需要根據實際情況更改。
本文介紹的“增、刪、改、查”只是MySQL操作中的一個縮影,MySQL還有許多其他函數可以供我們使用,但其基本操作仍然相似。為了提高效率及代碼可讀性,使用封裝后的類進行操作比單獨使用MySQL函數要更加方便,這也是許多PHP開發者選擇將兩者結合起來進行應用的原因。
綜上所述,本文主要介紹了PHP中使用MySQL進行封裝及操作的一些方法,相信大家都有了初步的認識。當然,想要真正熟練掌握這項技能還需要結合實際需求不斷學習和實踐,祝福大家在PHP與MySQL的封裝操作道路上越走越順!上一篇php mysql查詢
下一篇php mysql版本