【问题标题】:Change query to active record in Codeigniter在 Codeigniter 中将查询更改为活动记录
【发布时间】:2017-11-22 17:21:10
【问题描述】:

我想将此代码更改为活动记录查询,但这样做有困难。

 public function get_user($username, $password) {
    $p = md5($password);
    $q = "SELECT u.userid, u.userfullname, u.useraddress
    FROM user u 
    WHERE u.username = ? AND u.userpassword = ?";

    $r = $this->db->query($q, [$username, $p]);
    $this->db->close();
    return $r->result_object();
}

【问题讨论】:

  • 有什么具体原因需要使用codeigniter的活动记录实现吗?在使用 codeigniter 时,我一直使用准备好的语句(如果您将来切换平台,代码更便携)
  • 从 CodeIgniter v3.0.0 开始,“Active Record”被称为“Query Builder”。大多数是因为这是对它的作用的更准确描述。 “Active Record”在编程中有一个特定的架构模式,但这不是 CodeIgniter 的版本所做的。
  • 查询生成器 (QB) 在某些情况下非常方便。但是您非常简单的查询不是其中之一。了解 QB 的目的是创建通过调用 db->query() 执行的查询字符串。因此,对于简单的查询,您需要输入更多的代码,这些代码会执行相当多的代码来完成您在上面几行中所做的事情。学习如何使用 QB 很重要,但知道何时使用它同样重要。

标签: php codeigniter activerecord


【解决方案1】:

当您只处理单个表时,您不需要表别名“u”。如果您指的是 CodeIgniter 现在称为 Query Builder,那么这就是您的答案:

$r = $this->db->select('userid, userfullname, useraddress')
    ->where('username', $username)
    ->where('userpassword', $p)
    ->get('user');

if( $r->num_rows() > 0 )
    return $r->result();

return FALSE;

【讨论】:

    【解决方案2】:

    https://www.codeigniter.com/userguide3/database/query_builder.html

    return $this->db->select('userid, userfullname, useraddress')
    ->where('username', $username)
    ->where('userpassword', $p)
    ->get('user')->row();
    
    // if no entry null will be returned
    //row returns user as an object row_array() returns user as an array
    

    也代替 md5 看看他们的加密库 https://www.codeigniter.com/user_guide/libraries/encryption.html

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 2016-03-10
      • 2018-07-11
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多