美文网首页
CI数据库操作

CI数据库操作

作者: yzw12138 | 来源:发表于2017-12-15 14:55 被阅读0次

    一 数据库配置

    $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()来实现;

    相关文章

      网友评论

          本文标题:CI数据库操作

          本文链接:https://www.haomeiwen.com/subject/ofshwxtx.html