Codeigniter3.0.6--数据库操作

1、数据库操作    http://codeigniter.org.cn/user_guide/database/examples.html 

    $this->load->database();
    原生sql:
    $query = $this->db->query('select * from onethink_action');
    $res = $query->result();                //返回一个多结果标准查询(对象形式)
    
    $query = $this->db->query('select * from onethink_action');
    $res = $query-> result_array();         //返回一个多结果标准查询(数组形式)

    $query = $this->db->query('select * from onethink_action LIMIT 1');
    $row = $query->row();                    //返回一个单结果标准查询(对象形式)
    echo $row->name;

    $query = $this->db->query('select * from onethink_action LIMIT 1');
    $row = $query->row_array();                //返回一个单结果标准查询(数组形式)
    echo $row->name;
    
    
    $sql = "INSERT INTO onethink_action (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
    $this->db->query($sql);                    //标准插入
    echo $this->db->affected_rows();
    框架执行:    http://codeigniter.org.cn/user_guide/database/query_builder.html
    //查找数据    
    $query=$this-> db->get( 'action');       //action为onethink_action表名
    $res = $query->result();
    
    $this->db->where('id',1);
    $this->db->select('*');    
    $query = $this->db->get('action');
    $res = $query->result();
    
    //插入数据
    $data = array(
        'title' => $title,
        'name' => $name,
        'date' => $date
    );
    $this->db->insert('mytable', $data);
    
    //更新数据
    $this->db->where(uid,$id); //uid 数据库中自增id ,$id 控制器中传入id
    $this->db->update(t_name,$arr);//表名字 传入数组
    
    //删除数据
    $this->db->where(uid,$id);
    $this->db->delete(t_name);
    
    连贯查询:
    $this->db->select('*');
    $this->db->from('action');
    $this->db->join('action_log', 'action.id = action_log.action_id');
    $query = $this->db->get();
    var_dump($this->db->last_query());
    
    $res = $this->db->select('*')
                    ->from('action as a')
                    ->join('action_log as b', 'a.id = b.action_id')
                    ->where('b.status = 1') //注意id 后边有空格
                    ->limit(0,3)   //和正常的limit参数相反的
                    ->order_by('a.id desc')
                    ->get();
    var_dump($this->db->last_query());   


    SELECT *
    FROM `onethink_action`
    JOIN `onethink_action_log` ON `onethink_action`.`id` = `onethink_action_log`.`action_id`

    SELECT *
    FROM `onethink_action` as `a`
    JOIN `onethink_action_log` as `b` ON `a`.`id` = `b`.`action_id`
    WHERE `b`.`status` = 1
    ORDER BY `a`.`id` desc


    查询绑定(防注入):
    $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
    $this->db->query($sql, array(3, 'live', 'Rick'));
            
    多数据库操作:(切换数据库)
    $db2 = $this->load->database('default', TRUE);
    $res3 = $db2->query( 'select * from onethink_action where id=2');
    var_dump($res3->result());
            
    sprintf占位符的使用
    $id = $this->input->get_post('id') ? trim($this->input->get_post('id')) : '';
    $sql = sprintf('select * from onethink_action where id = %d', $id);
    $info = $this->db->query($sql);
    $info = $info->row_array();
    
    $title = $this->input->get_post('title') ? trim($this->input->get_post('title')) : '';
    $title=mysql_real_escape_string($title);
    $sql = sprintf('update onethink_action set title=\'%s\' where id=%d',$title,$id);
    $result = $this->db->query($sql);
      
    如果你的查询可能不返回结果,我们建议你先使用 num_rows()函数
    单结果标准查询(对象形式),row()该函数将当前请求的第一行数据作为 object 返回。
            (数组形式), row_array()函数返回一个 数组
            num_rows()该函数将会返回当前请求的行数。
            num_fields()该函数返回当前请求的字段数(列数)
            free_result()该函数将会释放当前查询所占用的内存并删除其关联的资源标识。
    快速插入: echo $this->db->affected_rows();

2、数据库快捷操作语句

    查询辅助函数
    关于执行查询的信息:
    $this->db->last_query();          //最后执行的sql语句
    $this->db->insert_id()             //当执行 INSERT 语句时,这个方法返回新插入行的ID。
    $this->db->affected_rows()    // 当执行 INSERT、UPDATE 等写类型的语句时,这个方法返回受影响的行数。
    关于数据库的信息:
    $this->db->count_all()            // 该方法用于获取数据表的总行数,第一个参数为表名
    $this->db->platform()            // 该方法输出你正在使用的数据库平台(MySQL,MS SQL,Postgres 等):
    $this->db->version()              // 该方法输出你正在使用的数据库版本:


3、DSN必然通过以下方式实现:

    $dsn = 'dbdriver://username:password@hostname/database';
    $this->load->database($dsn);


4、调用其他model的方法操作数据,得到数据源

    $this->load->model('article_model');
    $result = $this->article_model->getAllArticle(参数);


冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论