雷林鹏分享:CodeIgniter 数据库操作
在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理。这里总结下自己平时使用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 数据库操作的更多相关文章
- 雷林鹏分享:CodeIgniter常用的数据库操作类
在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作. 初始化数据库类 依据你的数据库配置载入并初始化数据库类: $this->lo ...
- 雷林鹏分享:Ruby 数据库访问 - DBI 教程
Ruby 数据库访问 - DBI 教程 本章节将向您讲解如何使用 Ruby 访问数据库.Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口. DBI 即 ...
- 雷林鹏分享:JSP 简介
JSP 简介 什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开 ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形菜单拖放控制
jQuery EasyUI 树形菜单 - 树形菜单拖放控制 当在一个应用中使用树(Tree)插件,拖拽(drag)和放置(drop)功能要求允许用户改变节点位置.启用拖拽(drag)和放置(drop) ...
- 雷林鹏分享:XML 用途
XML 用途 XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享. XML 把数据从 HTML 分离 如果您需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编 ...
- 雷林鹏分享:XML Parser
XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...
- 雷林鹏分享:XML DOM
XML DOM DOM(Document Object Model 文档对象模型)定义了访问和操作文档的标准方法. XML DOM XML DOM(XML Document Object Model) ...
- 雷林鹏分享:服务器上的 XML
服务器上的 XML XML 文件是类似 HTML 文件的纯文本文件. XML 能够通过标准的 Web 服务器轻松地存储和生成. 在服务器上存储 XML 文件 XML 文件在 Internet 服务器上 ...
- 雷林鹏分享:XML 相关技术
XML 相关技术 下面是一个 XML 技术的列表. XHTML (可扩展 HTML) 更严格更纯净的基于 XML 的 HTML 版本. XML DOM (XML 文档对象模型) 访问和操作 XML 的 ...
随机推荐
- python中pip升级
第一步: 首先安装python,在百度中搜索python,进入python官网,点击downliad, 下载到本地: 下载好后进行安装,与一般软件安装过程一样.安装过程中要注意勾线Add python ...
- Setting NLS_LANG Value for Oracle
Introduction Many times, when you have an Oracle application and you have to support special charact ...
- 轻量级集群管理软件-Ansible
ansible概述和运行机制 ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具, 它用Python写成,类似于saltstack和Puppet,但是有一个不同 ...
- ARP抓包实战小结-TCP/IP协议学习
2011-12-26 21:36:47 图1 一,环境说明 硬件连线.PC与2440开发板直接用网线连接. PC的ip地址:192.168.0.107.2440开发板的ip地址:192.168.0.1 ...
- centos7将网卡名字改成eth样式
ll /etc/sysconfig/grub lrwxrwxrwx 1 root root 17 Jun 12 2016 /etc/sysconfig/grub -> /etc/default/ ...
- electron 打包流程 electron-packager + NSIS
1.安装 electron-packager 2.electron-packager 应用目录 应用名称 打包平台 左上角的图标和任务栏的图标 输出目录 架构 版本 win打包: ele ...
- 一款非常好用的 Windows 服务开发框架,开源项目Topshelf
Topshelf是一个开发windows服务的比较好的框架之一,以下演示如何开发Topshelf服务. 1.首先打开你的vs.新建一个TopshelfStudy控制台程序,如下图所示: 这是我用vs2 ...
- ECS上nginx搭建反向代理通过内网访问阿里云OSS服务
对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...
- C# 开发AliYun(阿里云) 小蜜调用接口代码
using System; using System.Collections.Generic; using Aliyun.Acs.Core; using Aliyun.Acs.Core.Excepti ...
- 生成式对抗网络(GAN)学习笔记
图像识别和自然语言处理是目前应用极为广泛的AI技术,这些技术不管是速度还是准确度都已经达到了相当的高度,具体应用例如智能手机的人脸解锁.内置的语音助手.这些技术的实现和发展都离不开神经网络,可是传统的 ...