ci的增刪改查總結

1.查詢構造器的寫法

class demo_model extends CI_Model
{
    public function __construct()
    {
        $this->load->database();
    }

    //- 查詢實例
    public function select()
    {
        //SELECT * FROM mytable
        $query = $this->db->get('mytable');

        //SELECT * FROM mytable LIMIT 20, 10
        //說明:第二參數是每頁紀錄數,第三個參數是偏移
        $query = $this->db->get('mytable', 10, 20);

        //SELECT * FROM mytable where id=$id LIMIT  $offset,$limit
        $query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

        //SELECT title, content, date FROM mytable
        $this->db->select('title, content, date');
        $query = $this->db->get('mytable');

        //SELECT MAX(age) as age FROM members
        $this->db->select_max('age');
        $query = $this->db->get('members');

        //SELECT MIN(age) as age FROM members
        $this->db->select_min('age');
        $query = $this->db->get('members');

        //SELECT MAX(age) as member_age FROM members
        $this->db->select_max('age', 'member_age');
        $query = $this->db->get('members');

        //SELECT SUM(age) as member_age FROM members
        $this->db->select_sum('age', 'member_age');
        $query = $this->db->get('members');

        //SELECT title, content, date FROM mytable
        $this->db->select('title, content, date');
        $this->db->from('mytable');
        $query = $this->db->get();

        //SELECT * FROM blogs
        //JOIN comments ON comments.id = blogs.id
        $this->db->select('*');
        $this->db->from('blogs');
        $this->db->join('comments', 'comments.id = blogs.id');
        $query = $this->db->get();

        //可選參數:left,right, outer, inner, left outer,right outer.
        //LEFT JOIN comments ON comments.id = blogs.id
        $this->db->join('comments', 'comments.id = blogs.id', 'left');

        //WHERE name = 'joe'
        $this->db->where('name', 'joe');

        //WHERE name = 'joe' and id=1
        $this->db->where('name', 'joe');
        $this->db->where('id', 1);

        //WHERE name != 'joe' and id < 45
        $this->db->where('name !=', 'joe');
        $this->db->where('id <', 45);

        //WHERE name = 'Joe' AND title = 'boss'
        $array = array('name' => $name, 'title' => $title);
        $this->db->where($array);

        //WHERE name != 'Joe' AND id<1
        $array = array('name!=' => $name, 'id<' => $id);
        $this->db->where($array);

        //可以自定義where
        $where = "name='Joe' AND status='boss' OR status='active'";
        $this->db->where($where);

        //WHERE name != 'Joe' OR id > 50
        $this->db->where('name !=', $name);
        $this->db->or_where('id >', $id);

        //WHERE username IN ('Frank', 'Todd', 'James')
        $names = array('Frank', 'Todd', 'James');
        $this->db->where_in('username', $names);

        //OR username IN ('Frank', 'Todd', 'James')
        $names = array('Frank', 'Todd', 'James');//in後面只能是數組形式
        $this->db->or_where_in('username', $names);

        //WHERE username NOT IN ('Frank', 'Todd', 'James')
        $names = array('Frank', 'Todd', 'James');
        $this->db->where_not_in('username', $names);

        //OR username NOT IN ('Frank', 'Todd', 'James')
        $names = array('Frank', 'Todd', 'James');
        $this->db->or_where_not_in('username', $names);

        //WHERE title LIKE '%match%' AND body LIKE '%match%'
        $this->db->like('title', 'match');
        $this->db->like('body', 'match');

        //可選參數:before,after,both,none
        //WHERE title LIKE '%match'
        $this->db->like('title', 'match', 'before');

        // WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'
        $array = array('title' => $match, 'page1' => $match, 'page2' => $match);
        $this->db->like($array);

        // WHERE title LIKE '%match%' OR body LIKE '%match%'
        $this->db->like('title', 'match');
        $this->db->or_like('body', $match);

        // WHERE title NOT LIKE '%match%
        $this->db->not_like('title', 'match');

        // WHERE title LIKE '%match%' OR body NOT LIKE '%match%'
        $this->db->like('title', 'match');
        $this->db->or_not_like('body', 'match');

        //GROUP BY title
        $this->db->group_by("title");

        //GROUP BY title, date
        $this->db->group_by(array("title", "date"));

        //ORDER BY title DESC
        $this->db->order_by("title", "desc");

        //ORDER BY title DESC, name ASC
        $this->db->order_by('title desc, name asc');

        //ORDER BY title DESC, name ASC
        $this->db->order_by("title", "desc");
        $this->db->order_by("name", "asc");

        //LIMIT 10
        $this->db->limit(10);

        //LIMIT 20, 10 (僅限MySQL中。其它數據庫有稍微不同的語法)
        $this->db->limit(10, 20);

        //$this->db->count_all_results('my_table');
    }

    //插入實例
    public function insert()
    {
        //INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
        $data = array('title' => 'My title', 'name' => 'My Name', 'date' => 'My date');
        $this->db->insert('mytable', $data);

        //INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),
        //('Another title', 'Another name', 'Another date')
        $data = array(
            array(
                'title' => 'My title',
                'name' => 'My Name',
                'date' => 'My date'
            ),
            array(
                'title' => 'Another title',
                'name' => 'Another Name',
                'date' => 'Another date'
            )
        );
        $this->db->insert_batch('mytable', $data);

        //INSERT INTO mytable (field) VALUES (field+1)
        $this->db->set('field', 'field+1', FALSE);
        $this->db->insert('mytable');

        //INSERT INTO mytable (field) VALUES ('field+1')
        //$this->db->set('wealth', 'wealth-'.$wealth, FALSE);
        $this->db->set('field', 'field+1');
        $this->db->insert('mytable');

        //
        $array = array('name' => $name, 'title' => $title, 'status' => $status);
        $this->db->set($array);
        $this->db->insert('mytable');
    }

    //更新實例
    public function update()
    {
        // UPDATE mytable
        // SET title = '{$title}', name = '{$name}', date = '{$date}'
        // WHERE id = $id
        $data = array('title' => $title, 'name' => $name, 'date' => $date);
        $this->db->where('id', $id);
        $this->db->update('mytable', $data);

        $this->db->update('mytable', $data, "id = 4");
        //$where=array('id'=>10);
        //累加1
        $this->db->where($where)->set('views', 'views+1', false)->update('news_info');

        $where = array('id' => $id);
        $this->db->update('mytable', $data, $where);
    }

    //刪除實例
    public function delete()
    {
        //DELETE FROM mytable WHERE id = $id
        $this->db->delete('mytable', array('id' => $id));

        //DELETE FROM table1 WHERE id = 5
        //DELETE FROM table2 WHERE id = 5
        //DELETE FROM table3 WHERE id = 5
        $tables = array('table1', 'table2', 'table3');
        $this->db->where('id', '5');
        $this->db->delete($tables);

        // DELETE FROM mytable
        $this->db->empty_table('mytable');
    }

    //其他實例
    public function other()
    {
        //鏈式方法
        $this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
        $query = $this->db->get();

        //Active Record 緩存
        $this->db->start_cache();
        $this->db->select('field1');
        $this->db->stop_cache();

        $this->db->get('tablename');

        //此處輸出:SELECT `field1` FROM (`tablename`)

        $this->db->select('field2');
        $this->db->get('tablename');

        //此處輸出:SELECT `field1`, `field2` FROM (`tablename`)

        $this->db->flush_cache();

        $this->db->select('field2');
        $this->db->get('tablename');
        //此處輸出:SELECT `field2` FROM (`tablename`)
    }

    //顯示結果
    public function result()
    {
        return $query->row_array();//返回第一行數據,返回結果爲數組
        return $query->result_array();//返回多行數據,返回結果爲數組
        return $query->row();//返回第一行數據
        return $query->result();//返回多行數據

        return $query->row_array(4);//加參數,可返回第五行數據,用法同上

        return $query->num_rows();//當前請求行數

        return $query->num_fields();//當前請求的字段數(列數)

        $this->db->affected_rows();//更新插入顯示影響結果(insert/update)

        //顯示結果集
        return $this->db->query('sql');

        //顯示插入id
        return $this->db->insert_id();

        //顯示my_table有多少行數據
        return $this->db->count_all('my_table');

        //顯示系統使用的數據庫
        return $this->db->platform();

        //輸出系統正在運行的數據庫版本號
        return $this->db->version();

        //顯示最近執行的SQL語句:SELECT * FROM sometable....
        return $this->db->last_query();

        //生成一個SQL語句
        //INSERT INTO table_name (name, email, url) VALUES ('Rick', '[email protected]', 'example.com')
        $data = array('name' => $name, 'email' => $email, 'url' => $url);
        return $this->db->insert_string('table_name', $data);

        //同上
        $data = array('name' => $name, 'email' => $email, 'url' => $url);
        $where = "author_id = 1 AND status = 'active'";
        return $this->db->update_string('table_name', $data, $where);

        //直接執行一個SQL語句
        $sql = "";
        $result = $this->db->query($sql)->result_array();
    }
}

2.一般寫法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章