在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理。这里总结下自己平时使用CI过程中使用的如何对数据库进行操作处理。
在CI框架中,我们一般会把对数据库的操作放在models中,下面以文章操作类article_model.php为例:
1、数据库链接
class Article_model extends CI_Model
{
private $admin = null;
public function __construct()
{
$this->admin->load->database('admin', true);
}
}
解释一下,这里使用一个 $admin 属性的目的是为了多数据库操作的情况下使用,如果你的项目中只有一个数据库那么你可以这样
$this->load->database();
2、查询操作
对于查询操作自己不是很喜欢使用CI中那种链式操作方式,还是喜欢写些原生的SQL语句。这里使用的是封装查询:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->admin->query($sql, array(3, 'live', 'Rick'));
注意:这里使用query时我们不是用
$this->db->query($sql, array(3, 'live', 'Rick'));
而是用
$this->admin->query($sql, array(3, 'live', 'Rick'));
这就是刚才说的多数据库的区别。
还有,使用封装查询的第二个好处是所有的值都会被自动转义,形成了较为安全的查询语句。你无需手动地去转义这些数据;控制器将会自动为你进行。
完整的查询代码:
/**
* @param int $id
* @param string $status
* @param string $author
* @return mixed
*/
public function article($id, $status, $author)
{
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$query = $this->admin->query($sql, array($id, $status, $author));
return $query->result_array(); //结果返回数组
return $query->result(); //结果返回对象
}
3、插入操作
插入操作相对查询来说就比较简单了,这里不过多介绍,直接上代码:
/**
* @param array $data 需插入数据,注意数组key与表字段名对应
* @return bool
*/
public function add($data)
{
return $this->admin->insert('tableName', $data);
}
4、更新操作
/**
* @param int $id 条件
* @param array $data 需修改的数据,注意数组key与表字段名对应
* @return bool
*/
public function update($id, $data)
{
$this->admin->where('id', $id); //更新条件,根据实际情况自行修改
return $this->admin->update('tableName', $data);
}
5、删除操作
/**
* @param int $id 删除条件
* @return bool
*/
public function delete($id)
{
$this->admin->where('id', $id); //删除条件,根据实际情况自行修改
return $this->admin->delete('tableName');
}
上面就是CI中对数据库的基本操作方法,对于其他的,如:查询总数、查询缓存、转义查询、事务等操作,可以参考CI手册。(编辑:雷林鹏 来源:网络 侵删)