php 设置 mysql model_PHP模型Model类封装数据库操作示例

本文实例讲述了PHP模型Model类封装数据库操作。分享给大家供大家参考,具体如下:

//引入配置文件

include "./config.php";

class Model

{

public $link;//存储连接对象

public $tableName = "";//存储表名

public $field = "*";//存储字段

public $allFields = [];//存储当前表所有字段

public $where = "";//存储where条件

public $order = "";//存储order条件

public $limit = "";//存储limit条件

/**

* 构造方法 初始化

* @param string $tableName 要操作的表名

*/

public function __construct($tableName)

{

//1.存储操作的表名

$this->tableName = PRE.$tableName;

//2.初始化连接数据库

$this->getConnect();

//3.获得当前表的所有字段

$this->getFields();

}

/**

* 初始化连接数据库操作

*/

public function getConnect()

{

//1.连接数据库

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

//2.判断连接

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

echo mysqli_connect_error($this->link);

exit;

}

}

/**

* 执行并发送SQL(查询)

* @param string $sql 要查询的SQL语句

* @return array 返回查询出来的二维数组

*/

public function query($sql)

{

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

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

$arr = [];

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

$arr[] = $row;

}

}

return $arr;

}

/**

* 获取当前表的所有字段

*/

public function getFields()

{

//查看表结构

$sql = "desc {$this->tableName}";

//执行并发送SQL

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

$fields = [];

foreach ($result as $k => $v){

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

}

$this->allFields = $fields;

}

/**

* 执行并发送SQL语句(增删改)

* @param string $sql 要执行的SQL语句

* @return bool|int|string 添加成功则返回上一次操作id,删除修改操作则返回true,失败则返回false

*/

public function exec($sql)

{

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

//处理结果集

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

//判断是否为添加操作,是则返回上一次执行的id

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

return mysqli_insert_id($this->link);

}

//删除修改操作成功则返回true

return true;

}else{

//未执行成功则返回false

return false;

}

}

/**

* 查询多条数据

*/

public function select()

{

$sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";

//执行并发送SQL

return $this->query($sql);

}

/**

* 查询一条数据

* @param string $id 要查询的id

* @return array 返回一条数据

*/

public function find($id="")

{

//判断id是否存在

if (empty($id)){

$where = $this->where;

}else{

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

}

$sql = "select {$this->field} from {$this->tableName} {$where} limit 1";

//执行并发送sql

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

//返回一条数据

return $result[0];

}

/**

* 设置要查询的字段信息

* @param string $field 要查询的字段

* @return object 返回自己,保证连贯操作

*/

public function field($field)

{

//判断字段是否存在

if (empty($field)){

return $this;

}

$this->field = $field;

return $this;

}

/**

* 统计总条数

* @return int 返回总数

*/

public function count()

{

//准备SQL语句

$sql = "select count(*) as total from {$this->tableName} limit 1";

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

//返回总数

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

}

/**

* 添加操作

* @param array $data 要添加的数组

* @return bool|int|string 添加成功则返回上一次操作的id,失败则返回false

*/

public function add($data){

//判断是否是数组

if (!is_array($data)){

return $this;

}

//判断是否全是非法字段

if (empty($data)){

die("非法数据");

}

//过滤非法字段

foreach ($data as $k => $v){

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

unset($data[$k]);

}

}

//将数组中的键取出

$keys = array_keys($data);

//将数组中取出的键转为字符串拼接

$key = implode(",",$keys);

//将数组中的值转化为字符串拼接

$value = implode("','",$data);

//准备SQL语句

$sql = "insert into {$this->tableName} ({$key}) values('{$value}')";

//执行并发送SQL

return $this->exec($sql);

}

/**

* 删除操作

* @param string $id 要删除的id

* @return bool 删除成功则返回true,失败则返回false

*/

public function delete($id="")

{

//判断id是否存在

if (empty($id)){

$where = $this->where;

}else{

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

}

$sql = "delete from {$this->tableName} {$where}";

echo $sql;

//执行并发送

return $this->exec($sql);

}

/**

* 修改操作

* @param array $data 要修改的数组

* @return bool 修改成功返回true,失败返回false

*/

public function update($data){

//判断是否是数组

if (!is_array($data)){

return $this;

}

//判断是否是全是非法字段

if(empty($data)){

die("非法数据");

}

$str = "";

//过滤非法字段

foreach ($data as $k => $v){

if ($k == "id"){

$where = "where id={$v}";

unset($data[$k]);

}

if (in_array($k,$this->allFields)){

$str .= "{$k}='{$v}',";

}else{

unset($data[$k]);

}

}

//判断是否有条件

if (empty($this->where)){

die("请输入条件");

}

//去掉最右侧的逗号

$str = rtrim($str,",");

$sql = "update {$this->tableName} set {$str} {$this->where}";

return $this->exec($sql);

}

/**

* where条件

* @param string $where 输入的where条件

* @return $this 返回自己,保证连贯操作

*/

public function where($where)

{

$this->where = "where ".$where;

return $this;

}

/**

* order排序条件

* @param string $order 以此为基准进行排序

* @return $this 返回自己,保证连贯操作

*/

public function order($order)

{

$this->order = "order by ".$order;

return $this;

}

/**

* limit条件

* @param string $limit 输入的limit条件

* @return $this 返回自己,保证连贯操作

*/

public function limit($limit)

{

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

return $this;

}

/**

* 析构方法

* 关闭数据库连接

*/

public function __destruct()

{

mysqli_close($this->link);

}

}

//自行调试

$a = new Model("表名");

// var_dump($a->find(3));

// var_dump($a->select());

// var_dump($a->count());

// $res = $a->select();

//var_dump($res);

?>

希望本文所述对大家PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php /** * 产品属性模型 */ class s_model extends CI_MODEL { function all($table,$where='',$select=0,$id='',$like=0,$a=0,$b=0){ $where = isset($where)&&!empty($where)?$where:''; $id = isset($id)&&!empty($id)?" order by ".$id." desc ":''; $a = isset($a)&&!empty($a)?$a:0; $b = isset($b)&&!empty($b)?$b:999999; $select = isset($select)&&!empty($select)?$select:'*'; $like = isset($like)&&!empty($like)?$like:'';//and cat_type like '%{$_POST['cat_type']}%' $sql = "select ".$select." from ".$table.$where.$like.$id." limit ".$a.",".$b.""; return $this->db->query($sql)->result_array(); //查找 } function row($table,$where='',$select=0,$id='',$like=0,$a=0,$b=0){ $where = isset($where)&&!empty($where)?$where:''; $id = isset($id)&&!empty($id)?" order by ".$id." desc ":''; $a = isset($a)&&!empty($a)?$a:0; $b = isset($b)&&!empty($b)?$b:999999; $select = isset($select)&&!empty($select)?$select:'*'; $like = isset($like)&&!empty($like)?$like:'';//and cat_type like '%{$_POST['cat_type']}%' $sql = "select ".$select." from ".$table.$where.$like.$id." limit ".$a.",".$b.""; return $this->db->query($sql)->row_array(); //查找 } function num($table,$where='',$select=0,$id='',$like=0,$a=0,$b=0){ $where = isset($where)&&!empty($where)?$where:''; $id = isset($id)&&!empty($id)?" order by ".$id." desc ":''; $a = isset($a)&&!empty($a)?$a:0; $b = isset($b)&&!empty($b)?$b:999999; $select = isset($select)&&!empty($select)?$select:'*'; $like = isset($like)&&!empty($like)?$like:'';//and cat_type like '%{$_POST['cat_type']}%' $sql = "select ".$select." from ".$table.$where.$like.$id." limit ".$a.",".$b.""; return $this->db->query($sql)->num_rows(); //查找 } function uer_quanxian($id){ //$_GET['id']传过来的控制器文件夹 控制器名字 方法名字 中间没有/ $sq = "select yz_qx_href from xf_qx where id=".$_SESSION['founder'].""; $res = $this->db->query($sq)->row_array(); $res = explode(',', $res['yz_qx_href']); //p($res);exit(); foreach ($res as $key => &$value) { $sqss = "select id,yz_ci_href from xf_qx_ci where id=".$value.""; $value= $this->db->query($sqss)->result_array(); } $k = 0; foreach ($res as $key => $val) { foreach ($val as $key2 => $val2) { $newhello[$k]['id'] = $val2['id']; $newhello[$k]['yz_ci_href'] = $val2['yz_ci_href']; $k++; } } foreach ($newhello as $key => $value) { if ($value['yz_ci_href']== $_GET['id']) { echo $_GET['id']; }else{ echo "2"; } } } function getfirstchar($s0){ $firstchar_ord=ord(strtoupper($s0{0})); if (($firstchar_ord>=65 and $firstchar_ord<=91)or($firstchar_ord>=48 and $firstchar_ord<=57)) return $s0{0}; $s=iconv("UTF-8","gb2312", $s0); $asc=ord($s{0})*256+ord($s{1})-65536; if($asc>=-20319 and $asc<=-20284)return "A"; if($asc>=-20283 and $asc<=-19776)return "B"; if($asc>=-19775 and $asc<=-19219)return "C"; if($asc>=-19218 and $asc<=-18711)return "D"; if($asc>=-18710 and $asc<=-18527)return "E"; if($asc>=-18526 and $asc<=-18240)return "F"; if($asc>=-18239 and $asc<=-17923)return "G"; if($asc>=-17922 and $asc<=-17418)return "H"; if($asc>=-17417 and $asc<=-16475)return "J"; if($asc>=-16474 and $asc<=-16213)return "K"; if($asc>=-16212 and $asc<=-15641)return "L"; if($asc>=-15640 and $asc<=-15166)return "M"; if($asc>=-15165 and $asc<=-14923)return "N"; if($asc>=-14922 and $asc<=-14915)return "O"; if($asc>=-14914 and $asc<=-14631)return "P"; if($asc>=-14630 and $asc<=-14150)return "Q"; if($asc>=-14149 and $asc<=-14091)return "R"; if($asc>=-14090 and $asc<=-13319)return "S"; if($asc>=-13318 and $asc<=-12839)return "T"; if($asc>=-12838 and $asc<=-12557)return "W"; if($asc>=-12556 and $asc<=-11848)return "X"; if($asc>=-11847 and $asc<=-11056)return "Y"; if($asc>=-11055 and $asc<=-10247)return "Z"; return null; } //查找 public function getAll($table='',$where=array(),$select=''){ return $this->db->select($select)->where($where)->get($table)->result_array(); }//添加成功 function add($a){ $b= site_url($a); $this->halt($b,"添加成功",0); } function edit($a){ $b= site_url($a); $this->halt($b,"修改成功",0); } function del($a){ $b= site_url($a); $this->halt($b,"删除成功",0); } function view($a){ $b= site_url($a); $this->halt($b,"操作成功",0); } function view_del($a){ $b= site_url($a); $this->halt($b,"操作失败",4); }//查询 function select(){ $res=$this->db->get('yz_new_cate')->result_array(); foreach($res as $key=>$val){ $row=$this->db->where('cat_id',$val['cat_pid'])->get('yz_new_cate')->result_array(); if($row){ $res[$key]['father_name']=$row[0]['cat_name']; } } }//递归 function gui($arr,$html='|--',$pid=0,$level=0){ $str=array(); foreach($arr as $v){ if($v['cat_pid']==$pid){ $v['level']=$level + 1; $v['html']=str_repeat($html,$level); $str[]=$v; $str=array_merge($str,$this->gui($arr,$html,$v['cat_id'],$level+1)); } } return $str; } //递归是用方法cat_id 主id //top_id 主id是1 子都是1 //cat_pid 关联的id 主id是1则他是1 主id是2 下一集是2 //cat_level 分级id 总为1级 子 为2 在往下为3 /** * @CopyRight * @WebSite * @Author turingphp-zy * @Brief 图片放到根目录 * $msgtype 0 成功 1警告 2失败 **/// 第三个参数等于0和1好用 等于2不太好用 //$b= site_url('yemian/apption/get_list'); // $this->s_model->halt($b,"增加成功",0); function halt($forwardurl,$message,$msgtype) {$a=base_url('imagess/return.gif'); $c=base_url('imagess/donghua.gif'); //$c=base_url('imagess/return.gif'); //define('STYLE_PATH',str_replace(base_url(),'',base_url())); //define('STYLE_PATH',str_replace($_SERVER['DOCUMENT_ROOT'],'',ROOT_DIR)); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>温馨提示</title> <style> a{text-decoration: none;} .alert{background-color:#f1f1f1; width:495px;margin:50px auto; font-size:12px; line-height:24px;} .alert .alert_body{ border:1px solid #cbcbcb;background-color:#fff; width:475px; height:143px; position:relative; top:-5px; left:-5px; padding:10px;} .alert .alert_body h3{font-size:14px; font-weight:bold; margin:0;} .alert .alert_body .alertcont{margin:15px 0 0 85px; background:url(<?php echo base_url('imagess/m_err.png')?>) left center no-repeat; padding:5px 50px; line-height:18px; color:#666; min-height:30px; _height:30px;} .alert .alert_body .alertcont a{color:#000; text-decoration:none;} .alert .alert_body .alertcont span{font-size:12px; font-weight:bold; color:#000;} .alert .alert_body .btn{text-align:center; padding-top:0px;} .alert .alert_body .btn img{border:0;} .alert .alert_body .pi2{background:url(<?php echo base_url('imagess/m_err.png')?>) left center no-repeat;} .alert .alert_body .pi1{background:url(<?php echo base_url('imagess/m_acc.png')?>) left center no-repeat; padding-left:55px;} .message{display:block;position:absolute;top:0;left:30%; left:50%;/*FF IE7*/ top: 50%;/*FF IE7*/ margin-left:-240px!important;/*FF IE7 该值为本身宽的一半 */ margin-top:-70px!important;/*FF IE7 该值为本身高的一半*/ margin-top:0; position:fixed!important;/*FF IE7*/ position:absolute;/*IE6*/ _top: expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollTop + (document.documentElement.clientHeight-this.offsetHeight)/2 :/*IE6*/ document.body.scrollTop + (document.body.clientHeight - this.clientHeight)/2);/*IE5 IE5.5*/} .message .alert_body{ padding:0; height:163px; width:495px; border:1px solid #dfdfdf;} .message .alert_body h3{background-color:#fbfbe7; padding:3px 15px;} </style> </head> <body> <div class="alert message"> <div class="alert_body"> <?php if(intval($msgtype)==1){ $css = "alertcont"; }elseif(intval($msgtype)==2){ $css = "alertcont pi2"; }elseif(intval($msgtype)==4){ $css = "alertcont"; }elseif(intval($msgtype)==5){ $css = "alertcont"; }else{ $css = "alertcont pi1"; } ?> <h3>温馨提示</h3> <p class="<?php echo $css;?>"> <span><?php echo $message?></span> </p> <?php switch(intval($msgtype)){ case 0: echo("<meta http-equiv=\"refresh\" content=\"2;url=".$forwardurl."\">"); echo("<p style=\"font-align:center;\" align=\"center\"><a href=\"".$forwardurl."\"><img src=$c />秒后 如果你的浏览器没有自动跳转,请点击此链接</a></p>"); break; case 3: echo("<meta http-equiv=\"refresh\" content=\"2;url=".$forwardurl."\">"); echo("<p style=\"font-align:center;\" align=\"center\"><a href=\"".$forwardurl."\">2秒后 如果你的浏览器没有自动跳转,请点击此链接</a></p>"); break; case 4: echo("<meta http-equiv=\"refresh\" content=\"2;url=".$forwardurl."\">"); echo("<p style=\"font-align:center;\" align=\"center\"><a href=\"".$forwardurl."\">2秒后 如果你的浏览器没有自动跳转,请点击此链接</a></p>"); break; case 1: echo("<p class=\"btn\"><a href=\"javascript:history.go(-1);\"><img src=$a /> </a></p>"); break; case 2: echo("<p class=\"btn\"><a href=\"javascript:history.go(-1);\"><img src=$a/> </a></p>"); break; default: break; case 5: echo("<meta http-equiv=\"refresh\" content=\"0;url=".$forwardurl."\">"); break; case 6: echo("<p style=\"font-align:center;\" align=\"center\"><a href=\"javascript:top.location='".$forwardurl."'\">2秒后 如果你的浏览器没有自动跳转,请点击此链接</a></p>"); break; } ?> </div> </div> </body> </html> <?php exit; } } ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值