directory search
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
characters

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

数据库维护类

该类包含了一些帮助你管理数据库的函数。

目录

  • 初始化
  • 创建数据库
  • 删除数据库
  • 添加字段
  • 添加主键
  • 创建表
  • 删除表
  • 重命名表
  • 修改表

初始化

注意:欲初始化数据库维护类,请确保你的数据库驱动已经运行,因为该类依赖于数据库驱动。

使用如下方法载入数据库维护类:

$this->load->dbforge()

一旦初始化,就可以使用$this->dbforge对象访问类中函数:

$this->dbforge->some_function()

$this->dbforge->create_database('db_name')

允许你创建由第一个参数指定的数据库。根据成功或失败,返回 TRUE/FALSE:

if ($this->dbforge->create_database('my_db'))
{
echo '数据库已经被创建!';
}

$this->dbforge->drop_database('db_name')

允许你删除由第一个参数指定的数据库。根据成功或失败,返回 TRUE/FALSE:

if ($this->dbforge->drop_database('my_db'))
{
echo '数据库已经被删除!';
}

创建和删除表

创建表时有这么几件事需要你来完成。添加字段,添加主键和修改列。CodeIgniter提供如下方法完成这些操作。

添加字段

字段由关联数组创建。在数组中必须包含与字段数据类型相关的“类型”键。例如,INT,VARCHAR,TEXT等等。许多数据类型(如 VARCHAR)还需要“约束”键。

$fields = array(
'users' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
);

// 当字段被添加后,将被翻译为 "users VARCHAR(100)" .

此外,还可以使用下列键/值:

  • unsigned/true: 在字段定义中生成“UNSIGNED”。
  • default/value: 在字段定义中生成一个缺省值。
  • null/true: 在字段定义中生成“NULL” 。没有这个,字段缺省为“NOT NULL”。
  • auto_increment/tue: 为字段生成自动增量标记。注意,字段类型必须支持自动增量标记,如整型。

$fields = array(
'blog_id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'blog_title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'blog_author' => array(
'type' =>'VARCHAR',
'constraint' => '100',
'default' => 'King of Town',
),
'blog_description' => array(
'type' => 'TEXT',
'null' => TRUE,
),
);

字段定义后,使用$this->dbforge->add_field($fields);添加字段。接下来调用create_table()函数创建表。

$this->dbforge->add_field()

添加字段函数将接受上面这个数组。

传递字符串作为字段定义

如果你确切地知道自己要如何创建一个字段,你可以将字符串作为字段定义传递给 add_field():

$this->dbforge->add_field("label varchar(100) NOT NULL DEFAULT 'default label'");

说明: 多次调用add_field()是累加性的。

创建一个 id 字段

创建id字段有一种特殊的例外情况。一个id类型的字段将会被自动地赋值为 INT(9) 类型的自动递增主键。

$this->dbforge->add_field('id');
// 生成 id INT(9) NOT NULL AUTO_INCREMENT

添加键

一般来说,你会需要表中有键。这是通过$this->dbforge->add_key('field')来实现的。可选的第二个参数如果被设置为TRUE,那么就会生成一个主键。请注意add_key()后面必须调用create_table()

多列的非主键必须通过数组来传递。下面的示例输出是用于 MySQL 的。

$this->dbforge->add_key('blog_id', TRUE);
// 生成 PRIMARY KEY `blog_id` (`blog_id`)

$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->add_key('site_id', TRUE);
// 生成 PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)

$this->dbforge->add_key('blog_name');
// 生成 KEY `blog_name` (`blog_name`)

$this->dbforge->add_key(array('blog_name', 'blog_label'));
// 生成 KEY `blog_name_blog_label` (`blog_name`, `blog_label`)

创建表

声明了字段和键之后,你就可以使用下面的方法来创建一个表:

$this->dbforge->create_table('table_name');
// 生成 CREATE TABLE table_name

可选的第二个参数如果被设置为TRUE,那么,表的定义中就会添加 "IF NOT EXISTS" 子句

$this->dbforge->create_table('table_name', TRUE);
// 生成 CREATE TABLE IF NOT EXISTS table_name

删除表

执行一条 DROP TABLE 语句

$this->dbforge->drop_table('table_name');
// 生成 DROP TABLE IF EXISTS table_name

重命名表

执行一次表重命名

$this->dbforge->rename_table('old_table_name', 'new_table_name');
// 生成 ALTER TABLE old_table_name RENAME TO new_table_name

修改表

$this->dbforge->add_column()

这里的 add_column() 函数用来修改已经存在的表,并添加一个或多个字段。 它接受与上面相同的数组参数,并可用于无限数量的附加字段。

$fields = array(
'preferences' => array('type' => 'TEXT')
);
$this->dbforge->add_column('table_name', $fields);

// 生成 ALTER TABLE table_name ADD preferences TEXT

$this->dbforge->drop_column()

用于从表中移除一个列。

$this->dbforge->drop_column('table_name', 'column_to_drop');

$this->dbforge->modify_column()

本函数的用法与 add_column() 几乎完全相同,唯一的区别在于,本函数的用途是修改一个已存在的列,而不是添加一个新的。要重命名的话,你可以在字段定义数组中添加一个 "name" 键。

$fields = array(
'old_name' => array(
'name' => 'new_name',
'type' => 'TEXT',
),
);
$this->dbforge->modify_column('table_name', $fields);

// 生成 ALTER TABLE table_name CHANGE old_name new_name TEXT

翻译贡献者: Hex, ianyang, yeto, yinzhili, 笼中
最后修改: 2011-12-10 19:11:07
Previous article: Next article: