Автор оригинала: David Wong.
В примере этой статьи описывается класс БД и простое применение инкапсуляции PHP, аналогичное базе данных когерентной работы ThinkPHP. Чтобы поделиться с вами для вашей справки, следующим образом:
php
header("Content-Type:text/html;charset=utf-8");
/**
*The tool class for PHP to operate MySQL
*/
class Db{
Private $_db = null; // database connection handle
Private $_table = null; // table name
Private $_where = null; // where condition
Private $_order = null; // order sort
Private $_limit = null; // limit limit query
Private $_group = null; // group group
private $_configs = array(
'hostname' => 'localhost',
'dbname' => 'test',
'username' => 'root',
'password' => '1234'
); // database configuration
/**
*Constructor, connecting to database
*/
public function __construct(){
$link = $this->_db;
if(!$link){
$db = mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);
mysqli_query($db,"set names utf8");
if(!$db){
$this - > showexception ("error message". Mysqli "'connect"'error());
}
$this->_db = $db;
}
}
/**
*Get all data
*
* @param $table The table
*
* @return boolean All.
*/
public function getAll($table=null){
$link = $this->_db;
if(!$link)return false;
$sql = "SELECT * FROM {$table}";
$data = mysqli_fetch_all($this->execute($sql));
return $data;
}
public function table($table){
$this->_table = $table;
return $this;
}
/**
*Implement query operation
*
* @param string $fields The fields
*
* @return boolean ( description_of_the_return_value )
*/
public function select($fields="*"){
$fieldsStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($fields)){
$fieldsStr = implode(',', $fields);
}elseif(is_string($fields)&&!empty($fields)){
$fieldsStr = $fields;
}
$sql = "SELECT {$fields} FROM {$this->_table} {$this->_where} {$this->_order} {$this->_limit}";
$data = mysqli_fetch_all($this->execute($sql));
return $data;
}
/**
*Order sorting
*
* @param string $order The order
*
* @return boolean ( description_of_the_return_value )
*/
public function order($order=''){
$orderStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_string($order)&&!empty($order)){
$orderStr = "ORDER BY ".$order;
}
$this->_order = $orderStr;
return $this;
}
/**
*Where condition
*
* @param string $where The where
*
* @return ( description_of_the_return_value )
*/
public function where($where=''){
$whereStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_array($where)){
foreach ($where as $key => $value) {
if($value == end($where)){
$whereStr .= "`".$key."` = '".$value."'";
}else{
$whereStr .= "`".$key."` = '".$value."' AND ";
}
}
$whereStr = "WHERE ".$whereStr;
}elseif(is_string($where)&&!empty($where)){
$whereStr = "WHERE ".$where;
}
$this->_where = $whereStr;
return $this;
}
/**
*Group group
*
* @param string $group The group
*
* @return boolean ( description_of_the_return_value )
*/
public function group($group=''){
$groupStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($group)){
$groupStr = "GROUP BY ".implode(',',$group);
}elseif(is_string($group)&&!empty($group)){
$groupStr = "GROUP BY ".$group;
}
$this->_group = $groupStr;
return $this;
}
/**
*Limit limit query
*
* @param string $limit The limit
*
* @return ( description_of_the_return_value )
*/
public function limit($limit=''){
$limitStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_string($limit)||!empty($limit)){
$limitStr = "LIMIT ".$limit;
}elseif(is_numeric($limit)){
$limitStr = "LIMIT ".$limit;
}
$this->_limit = $limitStr;
return $this;
}
/**
*Execute SQL statement
*
* @param $sql The sql
*
* @return boolean ( description_of_the_return_value )
*/
public function execute($sql=null){
$link = $this->_db;
if(!$link)return false;
$res = mysqli_query($this->_db,$sql);
if(!$res){
$errors = mysqli_error_list($this->_db);
$this - > showexception ("wrong! < br / > error number: ". $errors [0] ['errno ']. < br / > sql error status:". $errors [0] ['sqlstate']. < br / > error information: ". $errors [0] ['error '];
die();
}
return $res;
}
/**
*Insert data
*
* @param $data The data
*
* @return boolean ( description_of_the_return_value )
*/
public function insert($data){
$link = $this->_db;
if(!$link)return false;
if(is_array($data)){
$keys = '';
$values = '';
foreach ($data as $key => $value) {
$keys .= "`".$key."`,";
$values .= "'".$value."',";
}
$keys = rtrim($keys,',');
$values = rtrim($values,',');
}
$sql = "INSERT INTO `{$this->_table}`({$keys}) VALUES({$values})";
mysqli_query($this->_db,$sql);
$insertId = mysqli_insert_id($this->_db);
return $insertId;
}
/**
*Update data
*
* @param $data The data
*
* @return ( description_of_the_return_value )
*/
public function update($data){
$link = $this->_db;
if(!$link)return $link;
if(is_array($data)){
$dataStr = '';
foreach ($data as $key => $value) {
$dataStr .= "`".$key."`='".$value."',";
}
$dataStr = rtrim($dataStr,',');
}
$sql = "UPDATE `{$this->_table}` SET {$dataStr} {$this->_where} {$this->_order} {$this->_limit}";
$res = $this->execute($sql);
return $res;
}
/**
*Delete data
*
* @return ( description_of_the_return_value )
*/
public function delete(){
$link = $this->_db;
if(!$link)return $link;
$sql = "DELETE FROM `{$this->_table}` {$this->_where}";
$res = $this->execute($sql);
return $res;
}
/**
*Abnormal information output
*
* @param $var The variable
*/
private function ShowException($var){
if(is_bool($var)){
var_dump($var);
}else if(is_null($var)){
var_dump(NULL);
}else{
echo "".print_r($var,true)."
";
}
}
}
$db = new Db();
//Query operation
var_dump($db->table('user')->where('id > 2')->order('id desc')->limit('2,4')->select());
//Insert operation
var_dump($db->table('user')->insert(array('username'=>'user','password'=>'pwd')));
//Update operation
var_dump($db->table('user')->where('id = 1')->update(array('username'=>'user1','password'=>'pwd1')));
//Delete operation
var_dump($db->table('user')->where('id = 1')->delete()); Для получения дополнительной информации о PHP читатели, интересующиеся PHP, могут ознакомиться со следующими темами: Краткое изложение навыков программирования баз данных PHP + mysqli, вводный курс объектно-ориентированного программирования PHP, энциклопедия навыков работы с массивами PHP, вводный курс по основному синтаксису PHP, краткое изложение использования строк PHP, вводный курс по работе с базами данных PHP + MySQL и краткое изложение общих чисел PHP по навыкам работы с базами данных
Я надеюсь, что эта статья будет полезна для программирования на PHP.
Оригинал: “https://developpaper.com/php-encapsulation-similar-to-thinkphp-coherent-operation-database-db-class-and-simple-application-example/”