***CI中的数据库操作(insert_id新增后返回记录ID)
在system/application/config 文件夹和里面的config文件里已经配置了参数
$active_group = "default";
$db['default']['hostname'] = ""; hostname: 你的数据库的位置, 举例来说, 'localhost' 或 IP 地址
$db['default']['username'] = ""; username和password: 使用者名称和密码必须有充分的权限,允许你的网站存取数据库中的数据。
$db['default']['password'] = "";
$db['default']['database'] = ""; database: 你的数据库的名字, 举例来说, 'websits'
$db['default']['dbdriver'] = ""; dbdriver: 你正在使用的数据库的类型 - CI可受的有选项有MySQL、MySQLi、 Postgre SQL、ODBC和MS SQL
CI中第一次连接数据库,在控制器或模型的构造函数里输入以下语句
$this->load->database();
就不需要重复连接, 在那个控制器或模型就可以做任意多次的查询。
增加数据(等同insert)
方法一:先建个数组,把要insert的值放在数组里.如下:其中url/name/clientid/type均为数据表属性值
$data = array(
'url' => 'www.mynewclient.com',
'name' => 'BigCo Inc',
'clientid' => '33',
'type' => 'dynamic'
);
然后使用$this->db->insert('sites', $data); 把数据增加到sites表中.
方法二:使用$this->db->set() 设置每一个值
$this->db->set('url', 'www.mynewclinet.com');
$this->db->set('name', 'BigCo Inc');
$this->db->set('clientid', '33');
$this->db->set('type', 'dynamic');
$this->db->insert('sites');
更新(等同update)
先定位要更新的记录,再update
$this->db->where('id', '1');
$this->db->update('sites', $data);
$this->db->set()方式也可以,和新增数据应该是一样的.
CI 提供几个函数检查数据库是否成功执行了相关操作。 最有用的:
$this->db->affected_rows();
在执行insert或update后应该返回 '1'-但是如果我正在update一批记录的话,可能返回更大的一个整数。
如果我正在insert一笔新的记录, 在实际产生它之前,我们并不知道ID具体的值。如果我需要引用新的记录的ID, 使用下列语句:
$new_id_number = $this->db->insert_id();
删除(等同delete)
$this->db->where('id', '2');
$this->db->delete('sites');
查询操作(等同select)
方法一:
$query = $this->db->get('sites'); //sites为表名
这是一个“select *”查询,目标是site表。换句话说,它取回所有的行
也可用下面这种方式写:
$this->db->from('sites');
$query = $this->db->get();
如果想要得到特定的列,而不是全部列,这样做:
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$query = $this->db->get('sites');
如果排序:
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$this->db->orderby("name", "desc");
$query = $this->db->get('sites');
如果想要限制返回的行数,比如想要最初五个结果
$this->db->select('url','name','clientid');//'url','name','clientid'为列名
$this->db->orderby("name", "desc");
$this->db->limit(5);
$query = $this->db->get('sites');
写where语句
==的情况
$this->db->where('clientid', '1'); //clientid属性 "1"为属性值
!=的情况
$this->db->where('url !=', 'www.mysite.com');
$this->db->where('id >', '3');
where后几个条件的可以写几个where 如
$this->db->where('url !=','www.mysite.com');
$this->db->where('id >', '3');
WHERE…OR的情况
$this->db->where('url !=','www.mysite.com' );
$this->db->orwhere('url !=','www.anothersite.com' );
连接表
$this->db->from('sites');
$this->db->join('people', 'sites.peopleid = people.id');
写个完整的查询
$this->db->select('url','name','clientid','people.surname AS client');
$this->db->where('clientid', '3');
$this->db->limit(5);
$this->db->from('sites');
$this->db->join('people', 'sites.clientid = people.id');
$this->db->orderby("name", "desc");
$query = $this->db->get();
方法二:
$this->db->query("SELECT id, name, url FROM sites WHERE 'type' = 'dynamic'");
可以像下面的语句一样写查询放条件
$condition = "client ='3' AND (type ='dynamic' OR type='static')";
$this->db->where($condition);
注意:双引号是定义变量的.不要混淆单引号和双引号.
显示查询结果
在查询语句后加上下面这句话
$query = $this->db->get();
如果有多个结果,他们被保存在$row对象中,可以用一个 foreach 循环:
foreach ($query->result() as $row)
{
print $row->url;
print $row->name;
print $row->client;
}
如果我们只想要一个结果,它可以作为一个对象被返回, 或在这里当做一个$row数组
if ($query->num_rows() > 0)
{
$row = $query->row_array();
print $row['url'];
print $row['name'];
print $row['client'];
}
***CI中的数据库操作(insert_id新增后返回记录ID)的更多相关文章
- CI中的数据库操作以及AR连贯操作
要使用CI中的数据库操作,首先我们应该在CI的 application/config/databass.php 文件中配置数据库信息,通常就是配置主机名,用户名,密码,数据库名,表前缀(dbprefi ...
- CI中的数据库操作
转载于:http://blog.sina.com.cn/s/blog_76e7bdba01016p2p.html CI中第一次连接数据库,在控制器或模型的构造函数里输入以下语句 $this->l ...
- android中的数据库操作(转)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- android中的数据库操作(SQLite)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- sql新增后返回主键
对于刚学的人来说有点帮助,新增后返回主键有两种方法: 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @ ...
- PHP中对数据库操作的封装
在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序.这是一件枯燥.费时而且容易出错的功作.其实我们可以用PHP中的类来实现对数据库操作的封装,从而使 ...
- CI中获取读操作的结果集行数+获取写操作的影响行数
本质:读操作,用mysql_num_rows函数,写操作用mysql_affected_rows函数 mysql_num_rows() 返回结果集中行的数目.此命令仅对 SELECT 语句有效.要取得 ...
随机推荐
- 关于Java单例
参考资料:http://blog.csdn.net/haoel/article/details/4028232 public class SingletonTest implements Runnab ...
- 图片服务器和WEB应用服务器相分离的简单方案
只是简单说明一下原理,其它的自己探索吧:) 一.两个域名:www.domain.com和img.domain.com 二.在www域名的服务器中上传文件: up.html <form name= ...
- JavaScript由单价、数量计算总价
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ASP.NET MVC 站点设置.html 为起始页
1. 删除 controller="XX" 2. 确保你的工程根目录下的*.htm或*.html文件名在IIS默认文档中存在 搞定
- virtualbox 不能为虚拟电脑打开一个新任务/VT-x features locked or unavailable in MSR.
确保了主机的BIOS中开启了Intel Virtual Technology,虚拟机配置中勾选了“启用VT-x/AMD-V”. 这是因为CPU不支持VT-X技术或者VT-X技术被锁定. 如果不打开虚拟 ...
- Linux中用st_mode判断文件类型
Linux中用st_mode判断文件类型 2012-12-11 12:41 14214人阅读 评论(4) 收藏 举报 分类: Linux(8) C/C++(20) 版权声明:本文为博主原创文章, ...
- Object、Function、String、Array原生对象扩展方法
JavaScript原生对象的api有些情况下使用并不方便,考虑扩展基于Object.Function.String.Array扩展,参考了prototype.js的部分实现,做了提取和修改,分享下: ...
- 两周“学会”bootstrap搭建一个移动站点
一直想着用bootstrap搭建网站,它的自适应.元素封装完善.现成的Glyphicons字体图标,省去很多的css.js.ui的工作,可以快速搭建一个客户需要的站点.ytkah自己有一些div+cs ...
- java的一段对象数据类型映射的代码
try { List<GateMetaPO> listGateInfoPO = majorGateReaderService.queryForAggregateBy( chapter); ...
- svn报错 400 Bad Request
MyEclipse中的svn,commit经常报错 Error: Commit failed (details follow): Error: At least one property chang ...