面向對象 MOdel

-----------------------------------config.php---------------------------------------------

<?php


//主機名

define('HOST','localhost');


//用戶名

define('USER', 'root');


// 密碼

define('PWD', '123456');


//數據庫

define('DB','ss21');


//字符集

define('CHARSET','utf8');

--------------------------------index.php--------------------------------------------------

<?php

include './config.php';

//echo HOST;exit;

include './Model.class.php';

//實例化對象

$user = new Model('info');



$userlist =  $user->select();

var_dump($userlist);


?>

<table>

<tr>

<td>編號</td>

<td>編號</td>

<td>編號</td>

<td>編號</td>

<td>編號</td>

</tr>

<?php foreach($userlist as $val){ ?>

<tr>

<td>編號</td>

<td>編號</td>

<td>編號</td>

<td>編號</td>

<td>編號</td>

</tr>

<?php } ?>

</table>



-------------------------------Model.class.php---------------------------------------------


<?php


//定義一個操作數據庫類

class Model{

public $tabName;//存儲表名的

public $link;//連接數據的對象

public $limit;//  用於存儲要顯示條數

public $fields='*';// 用於存儲要查詢的字段

public $allFields; //緩存數據庫字段

public $order;//用來存儲排序的內容

public $where;//用來存儲where條件

//構造方法裏面連接數據庫

public function __construct($tabName){

//初始化數據庫連接

$this->getConnect();

//將你要操作的數據表存儲起來

$this->tabName = $tabName;


//獲取數據庫字段

$this->getFields();

}

//查詢

public function select(){

//5.

$sql="SELECT {$this->fields} FROM {$this->tabName} {$this->where} {$this->order} {$this->limit}";

echo $sql;

return $this->query($sql);

}


//查詢一條結果

public function find($id){


//你查詢的一條結果sql語句

$sql="SELECT {$this->fields} FROM {$this->tabName} WHERE id={$id}";

//調用發送sql語句函數

return $this->query($sql);

//var_dump($list);

}


//統計總條數

public function count(){

//返回值是字符串

$sql="SELECT COUNT(*)  total FROM {$this->tabName}";

$list = $this->query($sql);

return $list[0]['total'];

}



//增加

//$data['name']='zhansan';

//$data['age']=18;

//$data['sex']=1;

//$data['city']='瀋陽';

public function add($data){

var_dump($data);


$key = array_keys($data);

$value = array_values($data);

$keys=join(',',$key);

$values = join("','",$value);


//var_dump($value);

//var_dump($key);exit;

$sql="INSERT INTO {$this->tabName}({$keys}) VALUES('{$values}')";

//echo $sql;exit;

return $this->execute($sql);


}

//刪除思路 傳遞一個參數 這個參數是id值 

public function del($id=''){

//如果你沒有傳遞過來id那麼就必須傳遞where條件

if(empty($id)){

$where = $this->where;

}else{

$where = " WHERE id='{$id}'";

}


if(empty($where)){

return '請你傳遞一個條件進來';

}

$sql="DELETE FROM {$this->tabName} {$where}";

return $this->execute($sql);


}

//修改

//修改需要傳遞一個參數 這個參數要是要修改的字段的數組

public function update($arr){

//1.判斷$arr 是不是數組

//2.判斷你是否使用id作爲修改內容還是使用where條件作爲修改內容

//3.要將你的鍵和你的值拼接在一起 形成 name='zhangsan',sex='1',age='19',city='北京',

//4.將多出來的逗號取掉

//5.將得到的字符串防止到sql語句的set後面


$sql="UPDEATE {$this->tabName} SET  WHERE id=";

return $this->execute($sql);

}


//每頁顯示多少條

public function limit($limit){

$this->limit = ' limit '.$limit;

//echo $this->limit;

return $this;

}


//排除的內容應該怎麼寫

//order by

public function order($str){

$this->order =" ORDER BY {$str} ";

return $this;

}



//字段過濾  字段篩選  查詢數據庫內容 刪除沒有的字段

public function field($fields=array()){

// var_dump($fields);

if(!is_array($fields)){

//保證連貫操作

return $this;

}


//檢測數據內容刪除沒有的字段

$fields = $this->check($fields);


if(empty($fields)){

return $this;

}

$this->fields = join(',',$fields);

//echo $this->fields;

return $this;

}

//where 

//$data['id']=1; id=1

//$data['id']=array('lt','10');

//$data['name']=array('like','張');


public function where($data){

//var_dump($data);exit;

//"where sex =1"

//where字符串拼接

//判斷傳遞過來的必須是一個數組 而且不能爲空

if(is_array($data) && !empty($data)){

//接受結果的

$result = array();

//循環傳遞進來的數組得到裏面的鍵和值

foreach($data as $key=>$value){

//判斷值是否爲數組

if(is_array($value)){

//var_dump($value);exit;

$type = $value[0];

//判斷你是什麼樣的條件將你所要的條件進行拼接

switch($type){

case 'like':

$result[]="{$key} LIKE '%{$value[1]}%'";

break;

case 'lt':

$result[]="{$key}<'{$value[1]}'";

break;

case 'gt':

$result[]="{$key}>'{$value[1]}'";

break;

case 'in':

$result[]="{$key} in({$value[1]})";

break;

}

}else{

//等於

$result[]="{$key}='{$value}'";

}

}

//echo ' WHERE '.join(' and ',$result);

//var_dump($result);exit;

}

//exit;

//where sex =1 and age >18;

//先把數組打開出來

$where = ' WHERE '.join(' and ',$result);

//echo $where;exit;

//var_dump($data);

//用來存儲查詢條件

$this->where = $where;

//保證連貫操作

return $this;


}





/****************輔助方法***************************/

//連接數據庫的方法

protected function getConnect(){

$this->link=mysqli_connect(HOST,USER,PWD);

if(mysqli_connect_errno($this->link)){

echo mysqli_connect_error($this->link);exit;

}

mysqli_select_db($this->link,DB);

mysqli_set_charset($this->link,CHARSET);

}

//用於 添加 修改 刪除

public function execute($sql){

$result = mysqli_query($this->link,$sql);

if($result && mysqli_affected_rows($this->link)>0){

if(mysqli_insert_id($this->link)){

return mysqli_insert_id($this->link);

}

return true; 

}else{

return false;

}

}


//查詢操作

public function query($sql){

$result = mysqli_query($this->link,$sql);

if($result && mysqli_num_rows($result)>0){

while($row = mysqli_fetch_assoc($result)){

$list[]=$row;

}

}

return $list;

}

//獲取數據庫字段方法

protected function getFields(){

//查看錶信息的數據庫語句

$sql="DESC {$this->tabName}";

//發送SQL語句

$result = $this->query($sql);

//新建一個數組 用來存儲數據庫字段

$fields = array();

foreach($result as $value){

//var_dump($value);

$fields[]=$value['Field'];

}

//var_dump($fields);

//設置爲緩存字段

$this->allFields = $fields;

}


//檢測字段的方法

public function check($arr){

//遍歷傳遞過來的數組  我們才能拿到數組中的鍵和值

foreach($arr as $key=>$value){

//echo $value.'<br/>';

//判斷 你的值是否在緩存字段的數組中allFields

if(!in_array($value,$this->allFields)){

unset($arr[$key]);

}

}

//var_dump($arr);

return $arr;

}


//析構方法

public function __destruct(){

mysqli_close($this->link);

}

}



 







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章