CI数据库操作
2017-12-15 本文已影响0人
yzw12138
一 数据库配置
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '123456',
'database' => 'demo',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
当因为某些原因数据库无法连接时,我们可以设置故障转移,此时会连接到另一个数据库,可以设置多个故障转移库;
$db['default']['failover'] = array(
array(
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
),
array(
'hostname' => 'localhost2',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
)
);
二 获取查询对象
- result():返回查询结果的对象数组,失败则返回空;
- result_array():返回一个纯粹的数组,失败则返回空;
- row():以对象形式返回查询结果的一行,如果想返回特定行,可以用row(3)实现;
- row_array():同row()一样,只是返回形式为数组,同样可以返回特定的行;
- unbuffered_row():和row()方法一样,但他不会预读取所有数据到内存中,他会返回查询的行,并通过内部指针指向下一行;
返回结果辅助函数
- num_rows():返回查询结果的行数;
- num_fields():返回查询结果的字段数(列数);
- free_result():释放掉查询结果所占用的资源,并删除结果的资源标识;
- data_seek():这个方法用来设置下一个结果行的内部指针,它只有在和 unbuffered_row() 方法一起使用才有效果。它接受一个正整数参数(默认值为0)表示想要读取的下一行,返回值为 TRUE 或 FALSE 表示成功或失败。
三 查询辅助函数
- $this->db->insert_id():插入后返回新插入数据的id;
- $this->db->affected_rows():对于insert,updata等操作,返回表中受影响的行数;
- $this->db->last_query():返回上一次执行的sql语句;
- $this->db->count_all('demo'):用于获取数据库的总行数;
三 事务
- 事务的运行:放在start和complete之间,根据查询查询执行是否成功,来判断是提交还是回滚;
$this->db->trans_start();
$this->db->query('.......');
$this->db->query('.......');
$this->db->trans_complete();
- 严格模式:当同时运行多个事务时,有一个事务失败,所有的事务都将回滚;
$this->db->trans_strict(FALSE);
- 错误处理:在没有在配置文件中启用db_debug时,可以用以下方法启用错误报告,并管理错误;
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
// generate an error... or use the log_message() function to log your error
}
- 禁用事务:通过在事务前添加$this->db->trans_off()实现,禁用事务后,查询结果直接提交,忽略start和complete;
- 测试模式:不管sql语句是否执行成功,查询都会被回滚;
$this->db->trans_start(TRUE);
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->trans_complete();
- 手动运行事务:用$this->db->trans_begin()替代$this->db->trans_start()来实现;