当前位置:Gxlcms > PHP教程 > 数据库实例化操作的代码优化写法,核心类进行精简了……

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

时间:2021-07-01 10:21:17 帮助过:5人阅读

本帖最后由 xjl756425616 于 2013-07-16 16:59:50 编辑

YouYaX

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();


回复讨论(解决方案)

怎么跟 thinkphp 一样?
精简了,路也窄了

AR模式。。其他代码是在你写的CMS里面吗?
我现在使用的是CI的AR代码。感觉还凑合。。ZF的太庞大。。期待更小巧的AR

怎么跟 thinkphp 一样?
精简了,路也窄了
貌似是差不多了,方便移植吧,二次开发更容易点

AR模式。。其他代码是在你写的CMS里面吗?
我现在使用的是CI的AR代码。感觉还凑合。。ZF的太庞大。。期待更小巧的AR
上述的类就是完整的比较简易的curd了,更加深入的没有去实现,毕竟不是做专业框架的。

人气教程排行