CodeIgniter框架——数据库类(配置+快速入门)

CodeIgniter用户指南——数据库类




1、数据库配置

CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 该配置文件位于application/config/database.php. 你也可以通过放置不同的database.php文件到特定的环境配置文件夹里来设置特定环境的数据库连接值.

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

 1 $db[‘default‘][‘hostname‘] = "localhost";
 2 $db[‘default‘][‘username‘] = "root";
 3 $db[‘default‘][‘password‘] = "";
 4 $db[‘default‘][‘database‘] = "database_name";
 5 $db[‘default‘][‘dbdriver‘] = "mysql";
 6 $db[‘default‘][‘dbprefix‘] = "";
 7 $db[‘default‘][‘pconnect‘] = TRUE;
 8 $db[‘default‘][‘db_debug‘] = FALSE;
 9 $db[‘default‘][‘cache_on‘] = FALSE;
10 $db[‘default‘][‘cachedir‘] = "";
11 $db[‘default‘][‘char_set‘] = "utf8";
12 $db[‘default‘][‘dbcollat‘] = "utf8_general_ci";
13 $db[‘default‘][‘swap_pre‘] = "";
14 $db[‘default‘][‘autoinit‘] = TRUE;
15 $db[‘default‘][‘stricton‘] = FALSE;

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

 1 $db[‘test‘][‘hostname‘] = "localhost";
 2 $db[‘test‘][‘username‘] = "root";
 3 $db[‘test‘][‘password‘] = "";
 4 $db[‘test‘][‘database‘] = "database_name";
 5 $db[‘test‘][‘dbdriver‘] = "mysql";
 6 $db[‘test‘][‘dbprefix‘] = "";
 7 $db[‘test‘][‘pconnect‘] = TRUE;
 8 $db[‘test‘][‘db_debug‘] = FALSE;
 9 $db[‘test‘][‘cache_on‘] = FALSE;
10 $db[‘test‘][‘cachedir‘] = "";
11 $db[‘test‘][‘char_set‘] = "utf8";
12 $db[‘test‘][‘dbcollat‘] = "utf8_general_ci";
13 $db[‘test‘][‘swap_pre‘] = "";
14 $db[‘test‘][‘autoinit‘] = TRUE;
15 $db[‘test‘][‘stricton‘] = FALSE;

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

1 $active_group = "test";

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

参数解析

 1 hostname - 数据库的主机名,通常位于本机,可以表示为 "localhost".
 2 username - 需要连接到数据库的用户名.
 3 password - 登陆数据库的密码.
 4 database - 你需要连接的数据库名.
 5 dbdriver - 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。
 6 dbprefix - 当运行Active Record查询时数据表的前缀,它允许在一个数据库上安装多个CodeIgniter程序.
 7 pconnect - TRUE/FALSE (boolean) - 使用持续连接.
 8 db_debug - TRUE/FALSE (boolean) - 显示数据库错误信息.
 9 cache_on - TRUE/FALSE (boolean) - 数据库查询缓存是否开启,详情请见数据库缓存类。
10 cachedir - 数据库查询缓存目录所在的服务器绝对路径。
11 char_set - 与数据库通信时所使用的字符集。
12 dbcollat - 与数据库通信时所使用的字符规则。
13     提示: 就MYSQL或MYSQLi数据库而言,如果服务器运行环境PHP版本小于5.2.3、MYSQL版本小于5.0.7,那么该项设置仅被用来备份(由数据库维护类DB Forge所创建查询)。如果使用多字节字符集并且使用低版本PHP环境中不兼容的mysql_real_escape_string()函数,它将使网站更容易受到SQL注入的危险。
14 swap_pre - 替换默认的dbprefix表前缀,该项设置对于分布式应用是非常有用的,你可以在查询中使用由最终用户定制的表前缀。
15     注: 如果设置了 $db[‘default‘][‘dbprefix‘] 的值 同时也设置了 $db[‘default‘][‘swap_pre‘] 的值,则会将查询代码中和$db[‘default‘][‘swap_pre‘] 的值一致的字符替换成 $db[‘default‘][‘dbprefix‘] 的值,如果没有设置 $db[‘default‘][‘swap_pre‘] 值,就直接在数据库表名前面加上 $db[‘default‘][‘dbprefix‘] 值。
16 autoinit - 当数据库类库(database library)被载入的时候是否需要自动连接数据库,如果设置为FALSE,将在首次查询前进行连接。
17 stricton - TRUE/FALSE (boolean) - 是否强制使用 "Strict Mode" 连接, 在开发程序时,使用 strict SQL 是一个好习惯。
18 port - 数据库端口号. 要使用这个值,你应该添加一行代码到数据库配置数组。
19     $db[‘default‘][‘port‘] = 5432;
20     提示: 并不是所有的值都是必须的,这取决与您所使用的数据库平台,如(MySQL, Postgres, 等.) 例如, 当你使用SQLite时,你不需要提供username 或 4444, 数据库名字就是您数据库文件的路径. 以上内容假定您使用的是 MySQL 数据库.

2、Active Record类

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

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

应用

CodeIgniter 使用的是修改过的 Active Record 数据库模式。 这种模式是以较少的程序代码来实现信息在数据库中的获取,插入,更改。 有时只用一两行的代码就能完成对数据库的操作。 CodeIgniter 不需要每一个数据库表拥有自己的类。它提供了一个更简单的接口。

不只是简单,使用 Active Record 的一个主要的优点是允许你创建独立的数据库应用程序,因为查询语法是由数据库的适配器来产生的。它可以进行更安全的查询,因为系统会自动的对所有的输入值进行转义。

3、连接数据库——手动+自动、one+more

(1)自动连接

“自动连接” 功能将在每一个页面加载时被自动实例化数据库类。要启用“自动连接”,可在application/config/autoload.php中的 library 数组里添加 database

$autoload[‘libraries‘] = array(‘database‘);

(2)手动连接

如果仅仅是一部分页面要求数据库连接,你可以在你有需要的函数里手工添加如下代码或者在你的类里手工添加以供该类使用。

1 $this->load->database();
2 如果以上函数的第一个参数没有任何信息,它将会在系统指定的数据库配置文件中寻找,对多数人而言,这是一个首选的方法。
0 可用的参数
1 数据库连接值,用数组或DSN字符串传递。
2 是否返回连接ID,TRUE/FALSE (boolean),默认值为FALSE (参阅下面的“连接多数据库”)。
3 是否启用 Active Record 类,TRUE/FALSE (boolean),默认值为 NULL。如有疑问,请查看/system/core/Loader.php的database()方法

(3)手动连接到一个数据库

函数的第一个参数能够从你的配置文件中自由的指定你自定义的详细的数据库配置信息。或者你甚至可以不通过指定的配置文件来提交数据库的连接属性。 样例:

要从你的配置文件中选择一个指定的数组你可以这么做:

1 $this->load->database(‘group_name‘);

group_name指的是存在于你的配置文件中的带有数据库连接信息的数组的名字。

要手动连接你要求的数据库你可以通过定义以下数组来实现:

 1 $config[‘hostname‘] = "localhost";
 2 $config[‘username‘] = "myusername";
 3 $config[‘password‘] = "mypassword";
 4 $config[‘database‘] = "mydatabase";
 5 $config[‘dbdriver‘] = "mysql";
 6 $config[‘dbprefix‘] = "";
 7 $config[‘pconnect‘] = FALSE;
 8 $config[‘db_debug‘] = TRUE;
 9 $config[‘cache_on‘] = FALSE;
10 $config[‘cachedir‘] = "";
11 $config[‘char_set‘] = "utf8";
12 $config[‘dbcollat‘] = "utf8_general_ci";
13
14 $this->load->database($config);

或者你可以以DSN的方式提交数据库配置信息。 DSN必然通过以下方式实现:

1 $dsn = ‘dbdriver://username:[email protected]/database‘;
2 $this->load->database($dsn);

当用 DSN 字符串连接时,要覆盖配置默认值,则添加配置变量为查询字符串。

$dsn = ‘dbdriver://username:[email protected]/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache‘;

$this->load->database($dsn);

 注:当你的dbdriver值为mysqli来进行远程连接时,切记要指定一个参数Port为远程mysql端口

 (4)连接多个数据库

如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:

1 $DB1 = $this->load->database(‘group_one‘, TRUE);
2 $DB2 = $this->load->database(‘group_two‘, TRUE); 

注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。

通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象

当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:

$DB1->query();
$DB1->result();
etc...

而不是:

$this->db->query();
$this->db->result();
etc...

译注:要连接多个数据库请先设置 config/database.php 中的 $db[‘xxxxxx‘][‘pconnect‘] = FALSE; 这是 mysql_pconnect() 造成的问题,和 CI 无关。

 (5)重新连接/保持连接有效

当你正在进行一些重量级的PHP操作(例如处理图片)时,如果超出了数据库服务器的空闲超时限度,你应该考虑在执行更多查询之前使用reconnect()方法来向服务器发送ping命令,这样可以优雅地保持或重新建立连接。

1 $this->db->reconnect();

(6)手动关闭连接

虽然CodeIgniter 可以智能的管理并自动关闭数据库连接,你仍可以用下面的方法显式的关闭掉。

1 $this->db->close();

 4、DB快速入门——下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。

初始化数据库类

下面的代码将依据你的数据库配置载入并初始化数据库类;

1 $this->load->database();

一旦被载入,你便可以使用它。

注:如果你的所有页面均要求初始化数据库类,你可以让它自动加载(可以写到模型的构造函数里面,这样在加载模型的同时就连接了数据库)

多结果标准查询(对象形式)

 1 $query = $this->db->query(‘SELECT name, title, email FROM my_table‘);
 2
 3 foreach ($query->result() as $row)
 4 {
 5     echo $row->title;
 6     echo $row->name;
 7     echo $row->email;
 8 }
 9
10 echo ‘Total Results: ‘ . $query->num_rows(); 

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

多结果标准查询(数组形式)

1 $query = $this->db->query(‘SELECT name, title, email FROM my_table‘);
2
3 foreach ($query->result_array() as $row)
4 {
5     echo $row[‘title‘];
6     echo $row[‘name‘];
7     echo $row[‘email‘];
8 }

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

测试查询结果

如果你的查询可能不返回结果,我们建议你先使用 num_rows()函数来测试:

 1 $query = $this->db->query("YOUR QUERY");
 2
 3 if ($query->num_rows() > 0)
 4 {
 5    foreach ($query->result() as $row)
 6    {
 7       echo $row->title;
 8       echo $row->name;
 9       echo $row->body;
10    }
11 } 

单结果标准查询(对象形式)

1 $query = $this->db->query(‘SELECT name FROM my_table LIMIT 1‘);
2
3 $row = $query->row();
4 echo $row->name;

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

单结果标准查询(数组形式)

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

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

标准插入(insert)

1 $sql = "INSERT INTO mytable (title, name)
2         VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
3
4 $this->db->query($sql);
5
6 echo $this->db->affected_rows(); 

快捷查询

快捷查询类能为我们提供快速取得数据的途径:

1 $query = $this->db->get(‘table_name‘);
2
3 foreach ($query->result() as $row)
4 {
5     echo $row->title;
6 }

上面的get()函数返回数据表中所有的结果快捷查询类 提供所有数据库操作的快捷函数。

快捷插入(insert)

1 $data = array(
2                ‘title‘ => $title,
3                ‘name‘ => $name,
4                ‘date‘ => $date
5             );
6
7 $this->db->insert(‘mytable‘, $data);
8
9 // Produces: INSERT INTO mytable (title, name, date) VALUES (‘{$title}‘, ‘{$name}‘, ‘{$date}‘)
时间: 2024-10-11 03:45:02

CodeIgniter框架——数据库类(配置+快速入门)的相关文章

CTK框架——CTK Plugin Framework快速入门

CTK框架--CTK Plugin Framework快速入门 一.CTK Plugin Framework简介 1.CTK Plugin Framework简介 CTK Plugin Framework基于Qt Plugin System和Qt Service Framework实现,并且增加了以下特性来扩展:A.插件元数据(由MANIFEST.MF文件提供):B.一个定义良好的插件生命周期和上下文:C.综合服务发现和注册:在Qt Plugin System中,插件的元数据由JSON文件提供.

关于类的快速入门

类的说明: (1)   class 是一个关键字,表示这是一个类,不能修改 (2)   public $name , 是一个成员属性, 当我们类定义的{} 中定义的变量,就是一个成员属性 (3)   public 是访问修饰符, 他是用于控制成员属性(变量)的访问范围的, 除了public还有两个,protected 和 private ,后面我们会详细介绍 (4)   $cat1 = new Cat , 这个叫实例化一个对象, $cat1 就是一个对象, new 是一个关键字,表示新创建一个对

网站前端_Highcharts-数据可视.0001.玩转Highcharts之配置快速入门?

简单介绍: 说明: Highcharts(4.1.6)是国际知名的一款图表插件,完全基于JS编写实现,可以轻松构建出各种图表类型,包括折线图(Line Charts)/面积图(Area Charts)/柱状图(Column Charts)/条形图(Bar Charts)/饼图(Pie Charts)/散点图(Scatter Charts)/气泡图(Bubble Charts)/动态图(Dynamic Charts)/组合图(Combinations)/3D图(3D charts)/仪表盘(Gau

Yii2框架RESTful API教程(一) - 快速入门

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则

Spring MVC 快速入门-01

MVC介绍 MVC是什么 mvc是一种使用MVC(Model View Controller) 设计创建Web应用程序的模式 Model(模型) 表示程序核心计算 View(视图) 展示数据 Controller (控制器) 处理输入 常用的MVC框架 比较常用的MVC框架有Struts 和 Spring MVC Struts是java Web MVC框架中不争的王者.经过长达九年的发展,Struts已经逐渐成长为一个稳定.成熟的框架,并且占有了MVC框架中最大的市场份额.但是Struts某些技

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

PDF.NET SOD 开源框架红包派送活动 &amp;&amp; 新手快速入门指引

一.框架的由来  快速入门 有关框架的更多信息,请看框架官方主页! 本套框架的思想是借鉴Java平台的Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP的特性,同时还参考了后来.NET的LINQ(本框架成型于2006年,当时还未听说过LINQ)使用风格,设计了OQL查询表达式.本框架的设计思想是通用的,完全可以移植到Java 平台,现在只提供了.NET平台的实现,暂且将本框架命名为 PDF.NET 从2013.10.1日起,原PDF.NET 将更名为 SOD one SQL-

使用 CodeIgniter 框架快速开发 PHP 应用(六)

原文:使用 CodeIgniter 框架快速开发 PHP 应用(六) 简化使用 Session 和安全 理论说得够多了! 现在让我们开始写我们自己的应用. 在这一章里,我们将会大致描述一下我们要建立的一个应用系统,而且我们分析一些会影响到网站系统的的基本问题也就是会话管理和安全. 在这一章,我们将会见到: .如何使你的网页安全 .如何使用 CI 的会话类 开始用 CI 设计一个实际的网站 我们已经看过 CI 安装时生成的welcome页以及它内部动作中控制器文件和视图文件的动作流程. 实际上这就

CodeIgniter连接数据库及快速入门

原文:CodeIgniter连接数据库及快速入门 一.数据库配置 CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 该配置文件位于application/config/database.php. 你也可以通过放置不同的database.php文件到特定的环境配置文件夹里来设置特定环境的数据库连接值. 配件文件存放在一个如下格式的一个多维数组里: $db['default']['host