2012-05-31 28 views
2

我有我的控制器上執行這些代碼的用戶獲取輸入值的文本框中SELECT查詢:與WHERE相當於在CakePHP

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

我該如何使用find()?

+0

我的型號名稱是employee_account.php和表名,我將選擇值是employee_accounts。所以我要把$ this - > [SOMETHING] - > find();我收到一個錯誤「調用一個非對象的成員函數find()」 –

回答

2

假設你有一個名字賬戶模式

$login = $this->Account->find('first', array(
         'conditions' => array(
          'Account.email' => $username, 
          'Account.password' => $password 
         ) 
        )); 
    if ($login) 
    {//do something} 
    else 
    { 
    } 
+0

我的模型名稱是employee_account.php,我選擇值的表名是employee_accounts。所以我要把$ this - > [SOMETHING] - > find();我收到一個錯誤「非對象上調用一個成員函數find()方法」 –

+0

[SOMETHING]應該是型號名稱其他明智find方法不會執行 –

+0

不喜歡逃避$用戶名/密碼$? – Dunhamzzz

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))); 
+0

我的模型名稱是employee_account.php,我選擇值的表名是employee_accounts。所以我要把$ this - > [SOMETHING] - > find();我收到一個錯誤「調用一個非對象的成員函數find()」 –

+0

您是否在配置中設置了數據庫?看看Cake文檔,在你的模型中你需要聲明$ name ='model name':http://book.cakephp.org/1.3/en/view/1001/Understanding-Models – StuR

+0

是的,我已經安裝好了我的數據庫在配置中。我想我需要更改數據庫名稱?我的數據庫名稱是employee_accounts。型號名稱是employee_account。控制器名稱是EmployeeAccountsController。 cakephp 2.1。哪裏不對? –

1

StuR差點沒事了,他只是走錯了路, rameters ..

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

此外,我不禁想起你嘗試登錄有人在這嗎? CakePHP has a built in authentication component,這消除了這樣寫find()的需要。另外,因爲你需要幫助在Cake中編寫非常基本的SQL查詢,所以我建議閱讀手冊中的Retrieving your data頁面。

+0

謝謝,內置認證問題..但我認爲我在命名約定中遇到問題。我的表是employee_accounts。型號名稱是employee_account。控制器是EmployeeAccountsController。有什麼不對的嗎? –