首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

数据库实例化操作的代码优化写法,核心种进行精简了…

2013-07-24 
数据库实例化操作的代码优化写法,核心类进行精简了……本帖最后由 xjl756425616 于 2013-07-16 16:59:50 编

数据库实例化操作的代码优化写法,核心类进行精简了……
本帖最后由 xjl756425616 于 2013-07-16 16:59:50 编辑

class ActiveRecord
{
    public $table;
    public $data;
    public $obj;    
    public function __construct($table)
    {
    $this->table = $table;
        $this->data  = array();        
        $this->obj = '';
        $this->connect();
    }
    public function connect()
    {
        $config = array_change_key_case(require("Conf/config.php"));
        if ((!empty($config['db_host'])) && (!empty($config['db_user'])) && (!empty($config['db_name']))) {
            $db_host = $config['db_host'];
            $db_user = $config['db_user'];
            $db_pwd  = $config['db_pwd'];
            $db_name = $config['db_name'];
            $con     = mysql_connect($db_host, $db_user, $db_pwd);
            mysql_select_db($db_name, $con);
            mysql_query("SET NAMES UTF8");
        }
    }
    public function __set($name, $value)
    {
        $this->data[$name] = $value;
        if(is_object($this->obj)) {
        $this->obj->$name = $value;
      }
    }
    public function __get($name)
    {
    if(is_object($this->obj)) {
        return $this->obj->$name;
      }
    }
    public function add()


    {
        $sql = "insert into " . $this->table . "(" . implode(",", array_keys($this->data)) . ") values('" . implode("','", array_values($this->data)) . "')";
        mysql_query($sql);
    }
    public function find($id)
    {
        $data = mysql_query("select * from $this->table where id=" . $id);
        $num  = mysql_num_rows($data);
        if ($num) {
            $this->obj = mysql_fetch_object($data);
        }
    }
    public function select($param = '')
    {
        $array = array();
        if ($param == '') {
            $res = mysql_query("select * from $this->table");
            while ($arr = mysql_fetch_array($res)) {
                $array[] = $arr;
            }
            return $array;
        } else {
            $data = split(",", $param);
            foreach ($data as $v) {
                $res = mysql_query("select * from $this->table where id=" . $v);
                $num = mysql_num_rows($res);
                if ($num) {
                    $arr     = mysql_fetch_array($res);
                    $array[] = $arr;


                }
            }
            return $array;
        }
    }
    public function save()
    {
        foreach ($this->obj as $k => $v) {
            $sql = "update " . $this->table . " set " . $k . "='" . $v . "' where id=" . $this->obj->id;
            mysql_query($sql);
        }
    }
    public function delete()
    {
        foreach ($this->obj as $k => $v) {
            $sql = "delete from " . $this->table . " where id=" . $this->obj->id;
            mysql_query($sql);
        }
    }
}
function T($table)
{
    $t = new ActiveRecord($table);
    return $t;
}



数据表实例化操作

这种表示法,适用于主键为 id 且自增的数据表中,快捷操作。

实例化数据表方法

用 T()函数表示,如:$u=T('表名称');
增加数据

$u=T("表名称");

$u->字段名 = 值;

$u->字段名 2 = 值;

$u->add();
更新数据

$u=T("表名称");

$u->find($id);

$u->字段名 = 值;

$u->字段名 2 = 值;

$u->save();
查找数据

$u=T("表名称");

$u->find($id);

Echo $u->字段名;

Echo $u->字段名2
查找数据集

$u=T("表名称");

$data=$u->select("id1,id2,id3");

若参数为空,返回整张数据表集合,也可以选择返回指定 id 的数据集,返回值
为二维数组,不是对象。
删除数据

$u=T("表名称");

$u->find($id);

$u->delete();
YouYaX


[解决办法]
怎么跟 thinkphp 一样?
精简了,路也窄了
[解决办法]
AR模式。。其他代码是在你写的CMS里面吗?
我现在使用的是CI的AR代码。感觉还凑合。。ZF的太庞大。。期待更小巧的AR

热点排行