基于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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
php下使用以下代码连接并测试
Apr 09 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
PHP导出Excel实例讲解
Jan 24 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
怎么清空javascript数组
2013/05/11 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
django 将model转换为字典的方法示例
2018/10/16 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
python学生管理系统学习笔记
2019/03/19 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
2014年计生标语
2014/06/23 职场文书
走进敬老院活动总结
2014/07/10 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers
python创建字典及相关管理操作
2022/04/13 Python