CI查詢構造器類(插入數據、更新數據、刪除數據)

1. 插入數據

 

1.1 $this->db->insert()

該方法根據你提供的數據生成一條 INSERT 語句並執行,它的參數是一個**數組** 或一個**對象**,下面是使用數組的例子:html

$data = array(
    'title' => 'My title',
    'name' => 'My Name',
    'date' => 'My date'
);

$this->db->insert('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

第一個參數爲要插入的表名,第二個參數爲要插入的數據,是個關聯數組。sql

下面是使用對象的例子:數組

/*
class Myclass {
    public $title = 'My Title';
    public $content = 'My Content';
    public $date = 'My Date';
}
*/

$object = new Myclass;
$this->db->insert('mytable', $object);
// Produces: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')

第一個參數爲要插入的表名,第二個參數爲要插入的數據,是個對象。ide

 

1.2  $this->db->get_compiled_insert()

該方法和 $this->db->insert() 方法同樣根據你提供的數據生成一條 INSERT 語句,可是並不執行。codeigniter

 

例如:ui

$data = array(
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date'
);

$sql = $this->db->set($data)->get_compiled_insert('mytable');
echo $sql;

// Produces string: INSERT INTO mytable (`title`, `name`, `date`) VALUES ('My title', 'My name', 'My date')

第二個參數用於設置是否重置查詢(默認狀況下會重置,正如 $this->db->insert() 方法同樣):this

echo $this->db->set('title', 'My Title')->get_compiled_insert('mytable', FALSE);

// Produces string: INSERT INTO mytable (`title`) VALUES ('My Title')

echo $this->db->set('content', 'My Content')->get_compiled_insert();

// Produces string: INSERT INTO mytable (`title`, `content`) VALUES ('My Title', 'My Content')

上面的例子中,最值得注意的是,第二個查詢並無用到 $this->db->from() 方法, 也沒有爲查詢指定表名參數,可是它生成的 SQL 語句中有 INTO mytable 子句。 這是由於查詢並無被重置(使用 $this->db->insert() 方法會被執行並被重置, 使用 $this->db->reset_query() 方法直接重置)。spa

 

1.3  $this->db->insert_batch()

 

該方法根據你提供的數據生成一條 INSERT 語句並執行,它的參數是一個**數組** 或一個**對象**,下面是使用數組的例子:code

$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);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')

第一個參數爲要插入的表名,第二個參數爲要插入的數據,是個二維數組。htm

 

2. 更新數據

2.1  $this->db->replace()

該方法用於執行一條 REPLACE 語句,REPLACE 語句根據表的**主鍵**和**惟一索引** 來執行,相似於標準的 DELETE + INSERT 。 使用這個方法,你不用再手工去實現 select()update()delete() 以及 insert() 這些方法的不一樣組合,爲你節約大量時間

例如:

$data = array(
    'title' => 'My title',
    'name'  => 'My Name',
    'date'  => 'My date'
);

$this->db->replace('table', $data);

 

 

註解這個方法不支持批量插入。

相關文章
相關標籤/搜索