目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于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 辅助函数
文字

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
上一篇:下一篇: