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

StuR 几乎做对了,他只是在转义和绑定参数方面走错了路。

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

此外,我不禁认为您正在尝试使用此登录某人?CakePHP 有一个内置的身份验证组件,这样就无需编写find()这样的组件了。此外,因为您需要帮助才能在 Cake 中编写一个非常基本的 SQL 查询,所以我建议您阅读手册中的检索您的数据页面。

于 2012-05-31T10:56:10.887 回答
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 回答
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 回答