查询绑定 $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick')); $sql = "SELECT * FROM some_table WHERE id IN ? AND status = ? AND author = ?"; $this->db->query($sql, array(array(3, 6), 'live', 'Rick')); 上面的例子会被转换为这样的查询: SELECT * FROM some_table WHERE id IN (3,6) AND status = 'live' AND author = 'Rick 错误处理 $this->db->error(); 要获取最近一次发生的错误,使用 error() 方法可以得到一个包含错误代码和错误消息的数组。 这里是一个简单例子: if ( ! $this->db->simple_query('SELECT `example_field` FROM `example_table`')) { $error = $this->db->error(); // Has keys 'code' and 'message' } $this->db->insert_id() 当执行 INSERT 语句时,这个方法返回新插入行的ID。 $this->db->affected_rows() 当执行 INSERT、UPDATE 等写类型的语句时,这个方法返回受影响的行数。 注解 在 MySQL 中执行 "DELETE FROM TABLE" 语句返回受影响的行数为 0 。 为了让这个方法返回正确的受影响行数,数据库类对此做了一点小 hack。 默认情况下,这个 hack 是启用的,你可以在数据库驱动文件中关闭它。 $this->db->last_query() 该方法返回上一次执行的查询语句(是查询语句,不是结果)。 举例: $str = $this->db->last_query(); $this->db->insert_string() 这个方法简化了 INSERT 语句的书写,它返回一个正确格式化的 INSERT 语句。 举例: $data = array('name' => $name, 'email' => $email, 'url' => $url); $str = $this->db->insert_string('table_name', $data); 第一个参数为表名,第二个参数是一个关联数组,表示待插入的数据。 上面的例子生成的 SQL 语句如下: INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@example.com', 'example.com') $this->db->update_string() 这个方法简化了 UPDATE 语句的书写,它返回一个正确格式化的 UPDATE 语句。 举例: $data = array('name' => $name, 'email' => $email, 'url' => $url); $where = "author_id = 1 AND status = 'active'"; $str = $this->db->update_string('table_name', $data, $where); 第一个参数是表名,第二个参数是一个关联数组,表示待更新的数据,第三个参数 是个 WHERE 子句。上面的例子生成的 SQL 语句如下: UPDATE table_name SET name = 'Rick', email = 'rick@example.com', url = 'example.com' WHERE author_id = 1 AND status = 'active' 手工运行事务 $this->db->trans_begin(); $this->db->query('AN SQL QUERY...'); $this->db->query('ANOTHER QUERY...'); $this->db->query('AND YET ANOTHER QUERY...'); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); }