CI(Code Igniter)框架是一款轻量级、快速、简单易用的PHP框架,广受开发者的喜爱。在CI框架的数据库操作方面,提供了很多便捷的工具和技巧,本文将会深入剖析CI框架的数据库操作技巧,帮助大家更好的使用CI框架。
一、连接CI框架数据库
连接CI框架数据库需要在数据库配置文件database.php中配置连接信息。位于/config/database.php。在这个文件中,我们需要配置数据库连接和默认使用数据库,将以下配置改成自己的数据库信息。
“`php
$database[‘default’] = array(
‘dsn’ => ”,
‘hostname’ => ‘localhost’,
‘username’ => ‘root’,
‘password’ => ”,
‘database’ => ‘mydatabase’,
…
);
“`
配置完成后,我们就可以在控制器中使用以下代码来连接数据库了。
“`php
$this->load->database();
“`
如果您需要连接其他数据库, 可以使用以下命令
“`php
$DB2 = $this->load->database(‘otherdb’, TRUE);
“`
`otherdb`是数据库配置文件中的其中一个数据库项的名称。通过设置第二个参数为TRUE(布尔类型)来告诉CI你希望返回数据库对象,而不是默认的结果。
二、查询CI框架数据库
在CI框架的数据库查询方式中,提供了三种查询方法。分别是CI框架QueryBuilder类库、Active Record类和原生SQL语句。
1、QueryBuilder类库
QueryBuilder类库是CI框架查询的核心库,它提供了精简的API,是非常简单易读的查询方式。以下是一个QueryBuilder的使用示例:
“`php
$this->db->select(‘title, content, date’);
$this->db->from(‘mytable’);
$this->db->where(‘id’, $id);
$this->db->limit(10);
$query = $this->db->get();
“`
上述代码通过调用select、from、where和limit等函数来组合生成一条SQL查询语句。CI框架将调用get函数,然后执行SQL查询,返回查询结果。
2、Active Record类
相比QueryBuilder类库,在Active Record类中,查询操作是更高级的方式。其API更加复杂,功能更加强大,比如支持多表连接查询。以下是Active Record类的使用示例:
“`php
$this->db->select(‘title, content, date’);
$this->db->from(‘mytable’);
$this->db->join(‘another_table’, ‘another_table.id = mytable.id’);
$this->db->where(‘id’, $id);
$this->db->where(‘date
$this->db->group_by(‘title’);
$this->db->limit(10);
$query = $this->db->get();
“`
这段代码将生成一个包含多个条件限制(where、join、group_by)的Active Record查询语句。SQL查询由CI框架驱动器提供,并且结果将存储在结果数组中。这个Active Record类提供了很多快捷的查询方法,可以根据不同的业务需求快速完成查询逻辑。
3、原生SQL
原生SQL语句是最直接的框架查询方式。在CI框架中,可以使用query函数执行这样的查询,并返回查询结果集。
“`php
$query = $this->db->query(“SELECT `title` FROM `mytable` WHERE `id` = ‘1’”);
“`
在这个例子中直接使用SQL语句执行查询。
三、执行CI框架数据库的事务
CI框架提供了一个简单的事务处理方式,简单易懂。通过设置数据库主驱动器和事务处理脚本即可。以下是一个使用事务会话的代码示例:
“`php
$this->db->trans_start();
$this->db->query(‘AN SQL QUERY…’);
$this->db->query(‘ANOTHER QUERY…’);
$this->db->trans_complete();
“`
在这段代码中,我们使用 $this->db->trans_start() 开始事务,然后依次执行两个SQL语句,最后使用 $this->db->trans_complete() 结束事务。其中,如果事务执行失败,整个过程就会被回滚,来保证数据的一致性。
四、查询CI框架中的结果集
在使用CI框架的查询操作之后,得到的是一个查询结果集对象。有些情况下,我们需要从结果集对象中获取数据。这时可以使用CI框架的result()、result_array()、row()和row_array()函数。
1、result()
result()函数将结果集以对象的形式返回,这些对象具有与被查询表列名相同的属性。
“`php
$query = $this->db->query(“SELECT * FROM my_table”);
foreach ($query->result() as $row)
{
echo $row->title;
}
“`
通过前置循环,可以遍历并输出结果。
2、result_array()
与 result() 相关的函数是 result_array(),它以代表每一行记录的关联数组形式返回结果集。数组索引将对应的是表的列名。
“`php
$query = $this->db->query(“SELECT * FROM my_table”);
foreach ($query->result_array() as $row)
{
echo $row[‘title’];
}
“`
3、row()
row() 返回结果集中的单个行。如果你调用了该函数的多个次数,他返回的分别是结果集的各行行。
“`php
$query = $this->db->query(“SELECT * FROM my_table LIMIT 1”);
$row = $query->row();
echo $row->title;
“`
4、row_array()
row_array()函数以关联数组的形式返回的结果集中的单个行。如果你调用了该函数的多个次数,他返回的分别是结果集的各行行。
“`php
$query = $this->db->query(“SELECT * FROM my_table LIMIT 1”);
$row = $query->row_array();
echo $row[‘title’];
“`
五、设置, 更新和删除数据
在CI框架中, 除了查询操作, 还有对数据执行添加,更新,和删除操作。为了实现这些操作,CI框架提供了active record类库。该类提供了快捷的方法来设置,更新和删除数据。以下是一个简单的用法示例:
“`php
$data = array(
‘name’ => $name,
’eml’ => $eml,
‘url’ => $url,
);
$this->db->insert(‘mytable’, $data);
“`
这个代码将在mytable表中插入名字、邮箱和 URL 数据。`insert()` 函数初始化一个 INSERT 查询,使用表示数据的关联数组填充数据。我们可以将其他数据类型添加到数据中以适应预期的表列类型。
以下示例中的代码将更新表中的数据:
“`php
$data = array(
‘name’ => $name,
’eml’ => $eml,
‘url’ => $url
);
$this->db->where(‘id’, $id);
$this->db->update(‘mytable’, $data);
“`
在这个例子中,我们通过调用 `update()` 函数,将id为 $id 的行的数据更新为 $data 数组中的值。update函数打开 UPDATE 查询,为运行中语句添加更新后的数据字段。同样,我们可以将其他数据类型添加到数组中以适应预期的列类型
删除操作和更新操作非常相似。您可以使用一般的向量和关联数组使用它:
“`php
$this->db->delete(‘mytable’, array(‘id’ => $id));
“`
这个代码将从mytable中删除 id 等于 $id 的行。
六、处理CI框架数据库的事务
在应用程序中,事务是处理的常见需求。事务可以确保在多个相关操作之间保持数据完整性和一致性。事务必须满足ACID属性:原子性、一致性、隔离性和持久性。
在CI框架中,事务可以使用如下方式开启、提交和回滚。
“`php
$this->db->trans_start();
// SQL 1
// SQL 2
$q1 = $this->db->query(‘YOUR QUERY HERE’);
$q2 = $this->db->query(‘YOUR QUERY HERE’);
$q3 = $this->db->query(‘YOUR QUERY HERE’);
$this->db->trans_complete();
“`
在这段代码中,我们在事务开始和结束之间给出每个 SQL 查询。如果事务无法成功进行,将回滚所有执行过的 SQL 查询。如果在事务内部的所有 SQL 查询都成功执行,那么 commit() 函数将被调用来提交事务。
在这个示例中,$q1、$q2 和 $q3 分别是输入语句的 SQL 查询对象。请注意,如果在提交时发生错误, 当前事务必须回滚。在任何情况下,建议使用 trans_complete 函数。
结语
通过本文的介绍,相信读者已经对CI框架的数据库操作有了更深入的了解。CI框架封装了复杂的数据库操作,方便我们的编程。在实际开发中,可以根据业务需求,选择合适的查询方式。同时,业务流程处理的过程中,需要始终关注数据一致性,使用事务协调各操作的执行,有效保证数据的正确性。CI框架是一个非常实用的框架,值得在项目中应用。
相关问题拓展阅读:
在数据库整理这个什么意思gbk_chinese_ci
mysql数据库?
排序的规则迹宴辩:祥键Gbk_chinese_ci是按照普通的字母顺序排,姿缺而且不区分大小写。gbk_bin 是按照二进制排序。
ci 数据库操作的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于ci 数据库操作,深入理解CI框架的数据库操作技巧,在数据库整理这个什么意思gbk_chinese_ci的信息别忘了在本站进行查找喔。
来源地址:深入理解CI框架的数据库操作技巧 (ci 数据库操作)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^