基于php和mysql的简单的dao类实现crud操作功能


Posted in PHP onJanuary 27, 2014
<?php
    //require_once('FirePHPCore/FirePHP.class.php');
    //$firephp = FirePHP::getInstance(true); // debugger in firefox
    class SimpleDao {
        private $_table = null;
        private static $_con = null;
        public function SimpleDao() {
            if ($this->_con == null) {
                $this->_con = @mysql_connect("localhost", "root", "123456");
                if ($this->_con == FALSE) {
                    echo("connect to db server failed.");
                    $this->_con = null;
                    return;
                }
                //$firephp->log("new DAO object");
                @mysql_select_db("swan", $this->_con);
            }
        }
        public function table($tablename) {
            $this->_table = $tablename;
            return $this;
        }
        public function query($sql) {
            $result = @mysql_query($sql);
            $ret = [];
            if ($result) {
                while ($row = mysql_fetch_array($result)) {
                    $ret[] = $row;
                }
            }
            return $ret;
        }
        public function get($where = null) {
            $sql = "select * from ".$this->_table;
            $sql = $sql.$this->_getWhereString($where);
            //echo "[get]".$sql."<br>";
            return $this->query($sql);
        }
        public function insert($params) {
            if ($params == null || !is_array($params)) {
                return -1;
            }
            $keys = $this->_getParamKeyString($params);
            $vals = $this->_getParamValString($params);
            $sql = "insert into ".$this->_table."(".$keys.") values(".$vals.")";
            //echo "[insert]".$sql."<br>";
            $result = @mysql_query($sql);
            if (! $result) {
                return -1;
            }
            return @mysql_insert_id();
        }
        public function update($params, $where = null) {
            if ($params == null || !is_array($params)) {
                return -1;
            }
            $upvals = $this->_getUpdateString($params);
            $wheres = $this->_getWhereString($where);
            $sql = "update ".$this->_table." set ".$upvals." ".$wheres;
            //echo "[update]".$sql."<br>";
            $result = @mysql_query($sql);
            if (! $result) {
                return -1;
            }
            return @mysql_affected_rows();
        }
        public function delete($where) {
            $wheres = $this->_getWhereString($where);
            $sql = "delete from ".$this->_table.$wheres;
            //echo "[delete]".$sql."<br>";
            $result = @mysql_query($sql);
            if (! $result) {
                return -1;
            }
            return @mysql_affected_rows();
        }
        protected function _getParamKeyString($params) {
            $keys = array_keys($params);
            return implode(",", $keys);
        }
        protected function _getParamValString($params) {
            $vals = array_values($params);
            return "'".implode("','", $vals)."'";
        }
        private function _getUpdateString($params) {
            //echo "_getUpdateString";
            $sql = "";
            if (is_array($params)) {
                $sql = $this->_getKeyValString($params, ",");
            }
            return $sql;
        }
        private function _getWhereString($params) {
            //echo "_getWhereString";
            $sql = "";
            if (is_array($params)) {
                $sql = " where ";
                $where = $this->_getKeyValString($params, " and ");
                $sql = $sql.$where;
            }
            return $sql;
        }
        private function _getKeyValString($params, $split) {
            $str = "";
            if (is_array($params)) {
                $paramArr = array();
                foreach($params as $key=>$val) {
                    $valstr = $val;
                    if (is_string($val)) {
                        $valstr = "'".$val."'";
                    }
                    $paramArr[] = $key."=".$valstr;
                }
                $str = $str.implode($split, $paramArr);
            }
            return $str;
        }
        public function release() {
            @mysql_close();
        }
    }
    function T($table) {
        return (new SimpleDao())->table($table);
    }
?>
PHP 相关文章推荐
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
解析php防止form重复提交的方法
Jul 01 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
php需登录的文件上传管理系统
Mar 21 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
php批量修改表结构实例
May 24 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
详解PHP Swoole与TCP三次握手
May 27 PHP
用php如何解决大文件分片上传问题
Jul 07 PHP
使用php测试硬盘写入速度示例
Jan 27 #PHP
网页上facebook分享功能具体实现
Jan 26 #PHP
php获取当前时间的毫秒数的方法
Jan 26 #PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 #PHP
php读取纯真ip数据库使用示例
Jan 26 #PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 #PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 #PHP
You might like
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Python异常处理总结
2014/08/15 Python
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
python如何更新包
2020/06/11 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
邻里守望志愿服务活动方案
2014/08/15 职场文书
2015年调度员工作总结
2015/04/30 职场文书
入党后的感想
2015/08/10 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis