3

私のコントローラーには、ユーザーがテキストボックスに入力した値を取得する次のコードがあります。

$username = $this->request->data['employee_account']['username'];
$password = $this->request->data['employee_account']['password'];

この種のクエリをcakePHPコードを使用して実装したいと思います。

"SELECT * FROM accounts WHERE username = '$username' AND password = '$password'";

find()を使用してこれを行うにはどうすればよいですか?

4

3 に答える 3

2

名前アカウントを持つモデルがあると仮定します

$login = $this->Account->find('first', array(
                        'conditions' => array(
                            'Account.email' => $username,
                            'Account.password' => $password
                        )
                    ));
    if ($login)
    {//do something}
    else
    {
    }
于 2012-05-31T10:25:25.520 に答える
2

StuRはほぼ正しく理解しました。彼は、パラメーターのエスケープとバインドについて間違った方向に進んでいます。

$this->EmployeeAccount->find('all', array(
    'conditions' => array(
        'accounts.username = ?' => $username,
        'accounts.password = ?' => $password
    )
));

さらに、私はあなたがこれで誰かにログインしようとしていると思わずにはいられませんか?CakePHPには認証コンポーネントが組み込まれているため、このようなものを書く必要はありませんfind()。また、Cakeで非常に基本的なSQLクエリを作成するために支援が必要なため、マニュアルの「データの取得」ページを読むことをお勧めします。

于 2012-05-31T10:56:10.887 に答える
1

まず、リクエストデータをフィルタリングし、SQLクエリの変数を抽出します。

extract(array_map('mysql_real_escape_string', $this->request->data['employee_account']));

次に、これでうまくいくはずです。

$this->accounts->find('all', array('conditions' => array('accounts.username' => $username, 'accounts.password' => $password)));
于 2012-05-31T10:20:38.873 に答える