www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

codeigniter自带数据库类使用办法求证,Codeigniter操

2019-07-20 07:03 来源:未知

CodeIgniter框架是一个非常小巧的PHP框架。CI自带数据库文件缓存,但按官方的说法,缓存设置后永不过期,除非你调用方法主动删除。

初始化数据库类

用codeigniter也有一段时间了,一直没有做什么总结。现在总结一些Codeigniter操作数据库表的优化写法,虽说不全,但是也确实可以帮助那些刚刚上手CI的同学。

Cache files DO NOT expire. Any queries that have been cached will remain cached until you delete them.

依据你的数据库配置载入并初始化数据库类:

链接数据库

感觉太弱智了,非常不方便。 修改一下db类,在开启缓存时设置一个过期时间,到期自动缓存自动失效。

复制代码 代码如下:

复制代码 代码如下:

1:CI database/DB_dirver.php 中 1021行 cache_on 函数替换为

this->load->database();

$this->load->database();//手动连接数据库
//连接多数据库
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);

复制代码 代码如下:

被载入之后你可以在任何地方使用它。

查询

function cache_on($expire_time=0) //add parm expire time - 缓存过期时间
{
$this->cache_expire_time = $expire_time; //add by kenvin
$this->cache_on = TRUE;
return TRUE;
}

以对象形式返回查询结果

复制代码 代码如下:

2:CI database/DB_cache.php 中 90行 read 函数 if (FALSE === ($cachedata = read_file($filepath))) 一行前面加上

复制代码 代码如下:

//参数绑定形式
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));

复制代码 代码如下:

$query = $this->db->query('SELECT name, title, email FROM my_table');

//多结果标准查询
$query = $this->db->query($sql); //自定义
$query = $this->db->get('tablename'); //便捷形式,相当于:SELECT * FROM tablename
$query = $this->db->get('tablename', 10, 20); // 相当于: SELECT * FROM tablename LIMIT 20, 10

//判断是否过期 // cache_expire_time
if ( !file_exists($filepath) ) {
return false;
}
if ( $this->db->cache_expire_time > 0 && filemtime($filepath) db->cache_expire_time) {
return false;
}

foreach ($query->result() as $row)
{
    echo $row->title;
    echo $row->name;
    echo $row->email;
}
echo 'Total Results: ' . $query->num_rows();

$query->result() //对象形式
$query->result_array() //数组形式
/*
foreach ($query->result() as $row)
{
    echo $row->title;
    echo $row->name;
    echo $row->email;
}
*/
$query->num_rows() //总条数
$query->num_fields() //字段数

这样,在需要开启缓存的地方,由以前的 $this→db→cache_on(); 改为

上面的result()函数返回一个对象的数组。例如:$row->title

//单结果标准查询
$row = $query->row(); //对象形式
$row = $query->row_array(); //数组形式
/*
$row = $query->row_array();
echo $row['name'];
*/

复制代码 代码如下:

以数组形式返回查询结果

 

$this→db→cache_on($SEC);

复制代码 代码如下:

插入

$SEC 为缓存过期时间,以秒为单位。 如 $this→db→cache_on(60);表示缓存60秒后过期。

$query = $this->db->query('SELECT name, title, email FROM my_table');

复制代码 代码如下:

您可能感兴趣的文章:

  • codeigniter自带数据库类使用方法说明
  • 新浪SAE云平台下使用codeigniter的数据库配置
  • codeigniter数据库操作函数汇总
  • Codeigniter操作数据库表的优化写法总结
  • CodeIgniter针对数据库的连接、配置及使用方法
  • CodeIgniter框架数据库事务处理的设计缺陷和解决方案
  • CI框架(CodeIgniter)实现的数据库增删改查操作总结
  • CodeIgniter框架数据库基本操作示例
  • CI(CodeIgniter)框架配置
  • CodeIgniter基本配置详细介绍
  • php框架CodeIgniter主从数据库配置方法分析

foreach ($query->result_array() as $row)
{
    echo $row['title'];
    echo $row['name'];
    echo $row['email'];
}

$data = array(
                'title' => $title,
                'name' => $name
                );
$this->db->insert('tablename', $data); //便捷插入
$this->db->insert_string('tablename', $data);  //便捷插入

上面的result_array()函数返回一个带下标的数组。例如:$row['title']

$this->db->insert_id() //刚插入的id
$this->db->affected_rows() //影响的行数(update,insert)

返回一条数据

更新

对象形式:

复制代码 代码如下:

复制代码 代码如下:

$data = array(
                'name' => $name,
                'email' => $email
                );
$where = "id = 1";
$this->db->update('tablename', $data);
$this->db->update_string('tablename', $data, $where);

$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row();
echo $row->name;

删除

上面的row()函数返回一个 对象。例如:$row->name

复制代码 代码如下:

数组形式:

$array = array(
                'name' => $name,
                'title' => $title
                );
$this->db->delete('tablename', $array);

复制代码 代码如下:

// Produces:
// "DELETE FROM tablename WHERE name = '$name' AND title = "$title""

$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row_array();
echo $row['name'];

$this->db->truncate('tablename'); //清空表
// Produce: TRUNCATE tablename

上面的row_array()函数返回一个 数组。例如:$row['name']

 

插入(insert)数据


复制代码 代码如下:

(where)

$array = array(
                'name' => $name,
                'title' => $title
                );
$this->db->where($array);

$sql = "INSERT INTO mytable (title, name)
VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
$this->db->query($sql);
echo $this->db->affected_rows();

// Produces: "WHERE name = '$name' AND title = "$title""

数据库配置

$this->db->count_all('tablename'); //表中记录总行数

$query->free_result() //释放资源

CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 配置文件位于以下路径:application/config/database.php

您可能感兴趣的文章:

  • codeigniter自带数据库类使用方法说明
  • 让CodeIgniter数据库缓存自动过期的处理的方法
  • 新浪SAE云平台下使用codeigniter的数据库配置
  • codeigniter数据库操作函数汇总
  • CodeIgniter针对数据库的连接、配置及使用方法
  • CodeIgniter框架数据库事务处理的设计缺陷和解决方案
  • CI框架(CodeIgniter)实现的数据库增删改查操作总结
  • CodeIgniter框架数据库基本操作示例
  • CI(CodeIgniter)框架配置
  • CodeIgniter基本配置详细介绍
  • php框架CodeIgniter主从数据库配置方法分析

配件文件存放在一个如下格式的一个多维数组里:

复制代码 代码如下:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

使用多维数组的原因是为了让你随意的存储多个连接值的设置。举例:如果你运行多个环境(development:开发、production:制作、test:测试 等等..),你能为每个环境建立独立的连接组,并在组直接进行切换。举例,设置一个"test"环境,你可以这样做:

复制代码 代码如下:

$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";

那么,告诉系统使用"test"组,你可以设置位于配置文件中的变量:

复制代码 代码如下:

$active_group = "test";

注意: "test"的名字是任意的,这可以让你自由设置,我们的主要连接默认使用"default"这个名字,当然,您可以基于您的项目为它起一个更有意义的名字。

Active Record

Active Record 类 可以通过数据库配置文件里的$active_record变量进行全局的设定(允许/禁止 TRUE/FALSE (boolean)). 如果你不用这个类,哪么你可以通过将这个变量值设置成FALSE来减少在数据库类初始化时对电脑资源的消耗。 $active_record = TRUE;

注意: 一些CodeIgniter的类,例如Sessions,在执行一些函数的时候需要Active Records的支持。

参数解析:

hostname - 数据库的主机名,通常位于本机,可以表示为 "localhost".
username - 需要连接到数据库的用户名.
password - 登陆数据库的密码.
database - 你需要连接的数据库名.
dbdriver - 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。
dbprefix - 当运行Active Record查询时数据表的前缀,它允许在一个数据库上安装多个CodeIgniter程序.
pconnect - TRUE/FALSE (boolean) - 使用持续连接.
db_debug - TRUE/FALSE (boolean) - 显示数据库错误信息.
cache_on - TRUE/FALSE (boolean) - 数据库查询缓存是否开启,详情请见数据库缓存类。
cachedir - 数据库查询缓存目录所在的服务器绝对路径。
char_set - 与数据库通信时所使用的字符集。
dbcollat - 与数据库通信时所使用的字符规则(character collation )。
port - 数据库端口号. 当前只用于 Postgres 驱动程序. 要使用这个值,你应该添加一行代码到数据库配置数组。

您可能感兴趣的文章:

  • 让CodeIgniter数据库缓存自动过期的处理的方法
  • 新浪SAE云平台下使用codeigniter的数据库配置
  • codeigniter数据库操作函数汇总
  • Codeigniter操作数据库表的优化写法总结
  • CodeIgniter针对数据库的连接、配置及使用方法
  • CodeIgniter框架数据库事务处理的设计缺陷和解决方案
  • CI框架(CodeIgniter)实现的数据库增删改查操作总结
  • CodeIgniter框架数据库基本操作示例
  • CI(CodeIgniter)框架配置
  • CodeIgniter基本配置详细介绍
  • php框架CodeIgniter主从数据库配置方法分析
TAG标签:
版权声明:本文由澳门新葡8455手机版发布于www.2527.com,转载请注明出处:codeigniter自带数据库类使用办法求证,Codeigniter操