基本的codeigniter活动记录和本机查询

时间:2012-03-10 07:18:57

标签: php codeigniter-2

我对简单问题感到困惑:

  • 活动记录与原生查询有什么区别?

  • 如果我在编码CI时遇到问题,我该怎么办?有拍摄麻烦吗?我应该使用什么?

  • CI会话和PHP会话之间有什么区别

感谢您的回答

这是我发现的差异,但仍然没有让我满意:

  

Session类允许您维护用户的“状态”并在浏览您的站点时跟踪他们的活动。 Session类将每个用户的会话信息存储为cookie中的序列化(和可选加密)数据。它还可以将会话数据存储在数据库表中以增加安全性,因为这允许将用户cookie中的会话ID与存储的会话ID进行匹配。默认情况下,仅保存cookie。如果选择使用数据库选项,则需要创建会话表,如下所示。

2 个答案:

答案 0 :(得分:3)

CodeIgniter的“活动记录”isn't what the real active record is all about.活动记录就像PHP格式的数据库一样。使用PHP与使用sql查询进行交互。这就像是感觉数据库数据是用PHP而不是数据库。

在CI中,他们的活动记录只是一个简单的旧“查询构建器”,它以干净,面向OOP的方式构建您的SQL查询,并返回一个格式干净的结果,这要归功于根据您的喜好格式化的几种方法(如{ {1}}表示数组格式的结果,result_array()表示对象格式的结果。

  

活动记录是一种访问数据库中数据的方法。数据库表或视图包装在一个类中。因此,对象实例绑定到表中的单个行。创建对象后,在保存时会向表中添加新行。加载的任何对象都从数据库中获取其信息。更新对象时,表中的相应行也会更新。包装类为表或视图中的每个列实现访问器方法或属性。

     

框架 CodeIgniter有一个名为“ActiveRecord”的查询构建器,但它没有实现ActiveRecord模式。而是实现了用户指南所引用的模式的修改版本。 CodeIgniter中的ActiveRecord功能可以通过使用CodeIgniter DataMapper库或CodeIgniter Gas ORM库来实现。 (维基百科)

CI也使用会话,就像PHP会话一样,差异是where it's stored

  

加载页面时,会话类将检查用户会话cookie中是否存在有效的会话数据。如果会话数据不存在(或者已过期)新会话将被创建并保存在cookie中。如果会话确实存在,则会更新其信息并更新cookie。每次更新时,都会重新生成session_id。 (http://codeigniter.com/user_guide/libraries/sessions.html

与会话数据保留在服务器中并通过发送的cookie或传递的会话ID识别的PHP不同,CI将其会话数据编码到cookie本身。这也是为什么在使用会话加密会话数据之前需要会话“密钥”的原因,因为在cookie中存储会话不安全。为什么他们这样做,我不知道,可能是为了优化服务器并避免将数据存储到它,牺牲负载速度

答案 1 :(得分:1)

Active Record可以简化在数据库上执行重复任务的工作。

普通查询看起来像:

$query = $this->db->query('SELECT * FROM mytable');

与活跃相同的地方如下:

$query = $this->db->get('mytable');

使用什么并不重要,最后只是做同样的事情,阅读数据库的手册部分。

至于Session它或多或少是相同的,因为CodeIgniter是一个框架,它包含一些PHP的东西,让你的生活更轻松,所以你可以使用本机PHP Session或CI中的那个,并不重要。< / p>

最后,如果你不使用那么多的CI,那么就做一些原始的PHP。