2

私は今でもブログチュートリアルで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;
}
}

そして私はいくつかのコードに興味があります。

  1. ?>コードの最後の行に何もないのはなぜですか?
  2. この行で$user=User::model()->find('LOWER(username)=?',array($username));なぜ使用しLOWER(username)=?ないのですかLOWER(username)=。なぜ必要がある?のですか、これは私がまだ知らなかった条件付きのクエリですか?
4

1 に答える 1

7
  1. ?>このリンクによると、実際には必要ありません:

    ファイルの末尾にある PHP ブロックの終了タグはオプションであり、include() や require() を使用する場合は省略すると便利な場合があるため、ファイルの末尾に不要な空白が発生することはありません。後で応答にヘッダーを追加できます。また、出力バッファリングを使用していて、インクルード ファイルによって生成された部分の末尾に不要な空白が追加されたくない場合にも便利です。

  2. これは、ここ?から見た SQL 構文に関連しています。また、ここでの2番目の回答は次のように述べています。

    疑問符は、後で置き換えられるパラメーターを表します。パラメーター化されたクエリを使用すると、パラメーターをクエリに直接埋め込むよりも安全です。

于 2011-09-27T11:39:20.470 に答える