数据库类
CodeIgnite提供了灵活强大的数据库类,要使用数据库类,首先需要做好数据库配置工作:
CodeIgniter 有一个配置文件用来保存数据库配置(用户名、密码、数据库名等等),这个配置文件位于 application/config/database.php
。 CodeIgnite提供了多套数据库配置的机制。
数据表的增删
通常情况下,我们无需自己创建数据库,数据库是由网站管理员来维护的。但是,数据库中的内容,即数据表则是由开发人员来完成的。创建数据表有两种办法,一种是在服务器上利用管理工具直接创建,另一种是使用脚本动态创建,显然,后一种方式有更多的优势。
CodeIgnite提供了数据库工厂类一来帮助管理数据库。这个类需要加载:
$this->load->dbforge();
增加数据表
创建表涉及到这样几件事:添加字段、添加键。
设置字段
字段通过一个关联数组来创建,数组中必须包含一个 'type' 索引,代表字段的数据类型。 例如,INT、VARCHAR、TEXT 等,有些数据类型(例如 VARCHAR)还需要加一个 'constraint' 索引。
$fields = array(
'users' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
);
关联数组能使用的项目如下:
- type:字段数据类型。
- constraint:字段长度。除了整数
'100'
之外,还可以是小数的形式[10, 2]
(10位数字,小数两位)。 - unsigned : 在字段定义中生成 "UNSIGNED",值为布尔值。
- default : 在字段定义中生成一个默认值。
- null : 在字段定义中生成 "NULL" ,如果没有这个,字段默认为 "NOT NULL",值为布尔值。
- auto_increment : 在字段定义中生成自增标识,值为布尔值。
- unique : 指定为unique索引。
除了使用关联数组的形式外,还可以用字符串的形式:
'created_at timestamp default CURRENT_TIMESTAMP',
'updated_at timestamp on update CURRENT_TIMESTAMP NOT NULL',
字段定义好了之后,就可以在调用 $this->dbforge->add_field($fields)
; 方法来添加字段了。
$this->dbforge->add_field($fields);
设置索引
按照规范,表应该有索引,尤其是要有主键。可以使用 $this->dbforge->add_key('field') 方法来实现。 第二个参数可选,可以将其设置为主键。
$this->dbforge->add_key('site_id', TRUE);
$this->dbforge->add_key('blog_name');
创建表
字段和键都定义好了之后,使用下面的方法来创建表:
$this->dbforge->create_table('table_name');
第二个参数设置为 TRUE ,可以在定义中添加 "IF NOT EXISTS" 子句。
$this->dbforge->create_table('table_name', TRUE);
// gives CREATE TABLE IF NOT EXISTS table_name
还可以指定表的属性,例如 MySQL 的 ENGINE
$attributes = array('ENGINE' => 'InnoDB');
$this->dbforge->create_table('table_name', FALSE, $attributes);
删除表
执行一个 DROP TABLE 语句,可以选择添加 IF EXISTS 子句。
// Produces: DROP TABLE IF EXISTS table_name
$this->dbforge->drop_table('table_name',TRUE);