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(参数);
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn