MySQL基本操作クラスをカプセル化
6975 ワード
'localhost',
'dbname' => 'test',
'username' => 'root',
'password' => '1234'
);//
/**
* ,
*/
private function __construct(){
$db = mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);
mysqli_query($db,"set names utf8");
if(!$db->errno){
echo " ".mysqli_connect_error();
}
self::_instance = $db;
}
}
// __clone
public function __clone(){
trigger_error('Clone is not allow!',E_USER_ERROR);
}
// ,
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::_instance = new self;
}
return self::$_instance;
}
/**
*
*
* @param $table The table
*
* @return boolean All.
*/
public function getAll($table=null){
$sql = "SELECT * FROM {$table}";
$data = mysqli_fetch_all($this->execute($sql));
return $data;
}
public function table($table){
$this->_table = $table;
return $this;
}
/**
*
*
* @param string $fields The fields
*
* @return boolean ( description_of_the_return_value )
*/
public function select($fields="*"){
$fieldsStr = '';
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
*
* @param string $order The order
*
* @return boolean ( description_of_the_return_value )
*/
public function order($order=''){
if(is_string($order)&&!empty($order)){
$orderStr = "ORDER BY ".$order;
}
$this->_order = $orderStr;
return $this;
}
/**
* where
*
* @param string $where The where
*
* @return ( description_of_the_return_value )
*/
public function where($where=''){
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
*
* @param string $group The group
*
* @return boolean ( description_of_the_return_value )
*/
public function group($group=''){
$groupStr = '';
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
*
* @param string $limit The limit
*
* @return ( description_of_the_return_value )
*/
public function limit($limit=''){
$limitStr = '';
if(is_string($limit)||!empty($limit)){
$limitStr = "LIMIT ".$limit;
}elseif(is_numeric($limit)){
$limitStr = "LIMIT ".$limit;
}
$this->_limit = $limitStr;
return $this;
}
/**
* sql
*
* @param $sql The sql
*
* @return boolean ( description_of_the_return_value )
*/
public function execute($sql=null){
if(!self::_instance){
return false;
}
$res = mysqli_query(self::_instance,$sql);
if(!$res){
$errors = mysqli_error_list(self::_instance);
return $errors;
}
return $res;
}
/**
*
*
* @param $data The data
*
* @return boolean ( description_of_the_return_value )
*/
public function insert($data){
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(self::_instance,$sql);
$insertId = mysqli_insert_id($this->_db);
return $insertId;
}
/**
*
*
* @param $data The data
*
* @return ( description_of_the_return_value )
*/
public function update($data){
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;
}
/**
*
*
* @return ( description_of_the_return_value )
*/
public function delete(){
$sql = "DELETE FROM `{$this->_table}` {$this->_where}";
$res = $this->execute($sql);
return $res;
}
}