YII CActiveRecord-> find()

Gus*_*ooL 2 php yii yii-cactiverecord

我现在仍然在博客教程上学习YII,并对一些代码感到好奇.

在此链接
http://www.yiiframework.com/doc/blog/1.1/en/prototype.auth

有这样的代码

<?php
class UserIdentity extends CUserIdentity
{
private $_id;

public function authenticate()
{
    $username=strtolower($this->username);
    $user=User::model()->find('LOWER(username)=?',array($username));
    if($user===null)
        $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if(!$user->validatePassword($this->password))
        $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
    {
        $this->_id=$user->id;
        $this->username=$user->username;
        $this->errorCode=self::ERROR_NONE;
    }
    return $this->errorCode==self::ERROR_NONE;
}

public function getId()
{
    return $this->_id;
}
}
Run Code Online (Sandbox Code Playgroud)

我对一些代码很好奇.

  1. 为什么?>代码的最后一行没有?
  2. 在这条线$user=User::model()->find('LOWER(username)=?',array($username));为什么用LOWER(username)=?LOWER(username)=.为什么有需要?,是否有一些查询有条件我可能还不知道呢?

boo*_*dev 7

  1. ?>根据这个链接,并不是真的需要:

    文件末尾的PHP块的结束标记是可选的,在某些情况下,在使用include()或require()时省略它是有帮助的,因此在文件末尾不会出现不需要的空格,并且您仍然会能够稍后将响应添加到响应中.如果使用输出缓冲,它也很方便,并且不希望在包含的文件生成的部分的末尾看到添加的不需要的空格.

  2. ?从看到有关SQL语法在这里.这里第二个答案说:

    问号表示稍后将被替换的参数.使用参数化查询比将参数直接嵌入查询更安全.