CI 数据库函数
一、基本操作
数据库连接与加载
在CI框架中,通过$this->load->database();
命令来加载数据库配置并连接到数据库,这一步通常放在控制器或模型的构造函数中,确保在进行数据库操作之前已经建立了连接。
public function __construct() { parent::__construct(); $this->load->database(); }
插入数据
使用$this->db->insert()
方法向表中插入数据,数据需要以数组的形式传递,键为列名,值为对应的数据。
$data = array( 'username' => 'zhagnsan', 'password' => md5('123456'), 'email' => '1234@gmail.com' ); $this->db->insert('users', $data);
删除数据
使用$this->db->delete()
方法从表中删除数据,可以通过条件数组指定删除哪一条记录。
$this->db->delete('users', array('username' => 'zhagnsan'));
更新数据
使用$this->db->update()
方法更新表中的数据,同样需要传递一个数组作为新值,并通过条件数组指定更新哪条记录。
$data = array( 'username' => 'lisi', 'password' => md5('1234567') ); $this->db->update('users', $data, array('username' => 'zhagnsan'));
查询数据
(1)基本查询
使用$this->db->get()
方法进行基本查询,可以获取整个表的数据。
$query = $this->db->get('users'); foreach ($query->result() as $row) { echo $row->username; }
(2)带条件查询
可以在get
方法之前使用where
、or_where
等方法添加查询条件。
$this->db->select('username, password'); $this->db->from('users'); $this->db->where('username', 'lisi'); $this->db->limit(2, 3); $this->db->order_by('email'); $query = $this->db->get();
二、高级查询条件
`where`子句
用于添加WHERE条件,支持多种格式:
简单条件:$this->db->where('key', 'value');
自定义条件:$this->db->where('MATCH (field) AGAINST (“value”)', NULL, FALSE);
复杂条件:$this->db->where('key !=', 'value');
`or_where`子句
用于添加OR条件,与where
类似,但生成的子句是用OR连接的:
$this->db->where('name !=', 'Joe'); $this->db->or_where('id >', 50); // 生成: WHERE name != 'Joe' OR id > 50
3.where_in
和or_where_in
用于检查字段是否在给定的选项中,分别用AND和OR连接:
$names = array('Frank', 'Todd', 'James'); $this->db->where_in('username', $names); // 生成: WHERE username IN ('Frank', 'Todd', 'James')
4.where_not_in
和or_where_not_in
用于检查字段是否不在给定的选项中,分别用AND和OR连接:
$names = array('Frank', 'Todd', 'James'); $this->db->where_not_in('username', $names); // 生成: WHERE username NOT IN ('Frank', 'Todd', 'James')
三、相关问答FAQs
问题1:如何在CI中使用事务?
答:CI框架提供了简单的事务处理机制,可以使用trans_start()
开始事务,trans_complete()
提交事务,或者在出错时调用trans_rollback()
回滚事务。
$this->db->trans_start(); $this->db->query('AN SQL QUERY...'); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); }
问题2:如何防止SQL注入?
答:CI框架自动对查询中的输入数据进行转义处理,以防止SQL注入攻击,尽量使用查询构建器而不是手动编写SQL语句,这样可以减少SQL注入的风险。
$username = $this->input->post('username'); $this->db->where('username', $username); // CI会自动转义$username
以上就是关于“ci 数据库函数”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1491491.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复