在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理。这里总结下自己平时使用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手册。(编辑:雷林鹏 来源:网络 侵删)

雷林鹏分享:CodeIgniter 数据库操作的更多相关文章

  1. 雷林鹏分享:CodeIgniter常用的数据库操作类

    在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作. 初始化数据库类 依据你的数据库配置载入并初始化数据库类: $this->lo ...

  2. 雷林鹏分享:Ruby 数据库访问 - DBI 教程

    Ruby 数据库访问 - DBI 教程 本章节将向您讲解如何使用 Ruby 访问数据库.Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口. DBI 即 ...

  3. 雷林鹏分享:JSP 简介

    JSP 简介 什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开 ...

  4. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形菜单拖放控制

    jQuery EasyUI 树形菜单 - 树形菜单拖放控制 当在一个应用中使用树(Tree)插件,拖拽(drag)和放置(drop)功能要求允许用户改变节点位置.启用拖拽(drag)和放置(drop) ...

  5. 雷林鹏分享:XML 用途

    XML 用途 XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享. XML 把数据从 HTML 分离 如果您需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编 ...

  6. 雷林鹏分享:XML Parser

    XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...

  7. 雷林鹏分享:XML DOM

    XML DOM DOM(Document Object Model 文档对象模型)定义了访问和操作文档的标准方法. XML DOM XML DOM(XML Document Object Model) ...

  8. 雷林鹏分享:服务器上的 XML

    服务器上的 XML XML 文件是类似 HTML 文件的纯文本文件. XML 能够通过标准的 Web 服务器轻松地存储和生成. 在服务器上存储 XML 文件 XML 文件在 Internet 服务器上 ...

  9. 雷林鹏分享:XML 相关技术

    XML 相关技术 下面是一个 XML 技术的列表. XHTML (可扩展 HTML) 更严格更纯净的基于 XML 的 HTML 版本. XML DOM (XML 文档对象模型) 访问和操作 XML 的 ...

随机推荐

  1. 测试客户端连接12c ASM实例

    环境:Oracle 12.2.0.1 RAC 背景:用户反映12c ASM创建的用户具备sysasm权限,但无法在客户端连接到ASM实例,且没有报错. 1.ASM实例创建用户赋予sysasm权限 2. ...

  2. 使用 notify.js 桌面提醒

    //var iN = new iNotify({ // effect: 'flash', // interval: 500, // message: "有消息拉!", // aud ...

  3. 记录Django学习1

    一.Django 1.首先安装好django模块 pip3 install django 2.然后配置好相应的环境变量 C:\Python35\Scripts 3. 创建Django工程,首先可以使用 ...

  4. ubuntu16.04 backup and restore

    http://blog.csdn.net/qq_35523593/article/details/78545530

  5. Visual Studio 项目依赖

    在解决方案上点击右键,选择项目依赖项 选择需要发布的所有依赖项目 主要是为了解决插件项目DLL无法生成的问题

  6. 一个handle使用更新线程的实例

    handle更新线程实例 package com.example.administrator.handle; import android.app.Activity;import android.os ...

  7. 纪念一下学写pipeline时脑子里的坑

    用的是filespipeline,用的存储地址是images的地址 测试煎蛋ooxx首页,shell测试的时候返回很多列表,但是实际爬的时候一直只返回一条,很烦,一直测一直测,就是不行,后来才发现,首 ...

  8. (转)利用CAS算法实现通用线程安全状态机

    在多线程环境下,如果某个类是有状态的,那我们在使用前,需要保证所有该类的实例对象状态一致,否则会出现意向不到的bug.下面是通用线程安全状态机的实现方法. public class ThreadSav ...

  9. 【DOM练习】百度历史搜索栏

    HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <t ...

  10. 【转】Anaconda下安装pyecharts步骤及常见错误

    本文转载自:https://blog.csdn.net/skj1995/article/details/81187954 (1)之前看了几篇博客,有人说用cmd命令在目录C:\Users\Admini ...