数据库实例化操作的代码优化写法,核心类进行精简了……
本帖最后由 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