2009-08-20 4 views
1

Так следовали всем основным учебникам. Я использую Zend 1.8, но я продолжаю получать это исключение при использовании Zend_Auth_DB. Любые идеи, есть только одна строка в таблице.Zend_Auth: Структура таблицы БД

Exception information: 

Message: The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity. 

Stack trace: 

#0 C:\projects\BHAA_ZEND\library\Zend\Auth\Adapter\DbTable.php(306): Zend_Auth_Adapter_DbTable->_authenticateQuerySelect(Object(Zend_Db_Select)) 
#1 C:\projects\BHAA_ZEND\library\Zend\Auth.php(117): Zend_Auth_Adapter_DbTable->authenticate() 
#2 C:\projects\BHAA_ZEND\application\controllers\LoginController.php(79): Zend_Auth->authenticate(Object(Zend_Auth_Adapter_DbTable)) 
#3 C:\projects\BHAA_ZEND\application\controllers\LoginController.php(38): LoginController->getAuthAdapter(Array) 
#4 C:\projects\BHAA_ZEND\library\Zend\Controller\Action.php(512): LoginController->processAction() 
#5 C:\projects\BHAA_ZEND\library\Zend\Controller\Dispatcher\Standard.php(288): Zend_Controller_Action->dispatch('processAction') 
#6 C:\projects\BHAA_ZEND\library\Zend\Controller\Front.php(945): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#7 C:\projects\BHAA_ZEND\library\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch() 
#8 C:\projects\BHAA_ZEND\library\Zend\Application.php(328): Zend_Application_Bootstrap_Bootstrap->run() 
#9 C:\projects\BHAA_ZEND\public\index.php(33): Zend_Application->run() 
#10 {main} 

Это код ошибки.

public function getAuthAdapter(array $params) 
{ 
    $dbAdapter = Zend_Db_Table::getDefaultAdapter(); 
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 

    $authAdapter->setTableName('login') 
       ->setIdentityColumn('username') 
       ->setCredentialColumn('password'); 
       //->setCredentialTreatment('MD5(?)'); 
    // pass to the adapter the submitted username and password 
    $authAdapter->setIdentity($username)->setCredential($password); 

    $auth = Zend_Auth::getInstance(); 
    $result = $auth->authenticate($authAdapter); 
    if ($result->isValid()) { 
       // success : store database row to auth's storage system 
       // (not the password though!) 
       $data = $authAdapter->getResultRowObject(null, 'password'); 
       $auth->getStorage()->write($data); 
       //$this->_redirect('/'); 
       return $this->_helper->redirector('index','index'); 
      } else { 
       // failure: clear database row from session 
       $this->view->message = 'Login failed.'; 
       return $this->render('index'); 
      } 
    return $result; 
} 

Вы прочитали документацию для Zend_Auth_Adapter_DbTable? - Да, но я не уверен, очистил ли он или замутил мое понимание.

У вас есть действующее подключение к базе данных? - Да, есть рабочее CRUD-приложение с тем же конфигурацией DB.

Какова структура вашей таблицы пользователей? -

Вы правильно указали столбцы идентификации и учетных данных для конструктора Zend_Auth_Adapter_DbTable? - Смотрите код выше, я так считаю.

Вы также указали имя пользователя/пароль, который вы пытаетесь выполнить проверку подлинности? - Да, есть форма Zend, представляющая эти переменные.

Каков SQL-запрос, вызывающий ошибку? Я думаю, что так оно и есть.

SELECT `isp_partners_view`.*, (CASE WHEN `password` = '*****' THEN 1 ELSE 0 END) AS `zend_auth_credential_match` FROM `isp_partners_view` WHERE (`username` = '*****') 
+2

Не могли бы вы разместить больше информации? Какие звонки вы делаете с Zend_Auth_DB ?? – Breakthrough

+0

Вы когда-нибудь разрешали эту ошибку? Какова была основная причина и решение? –

ответ

4

Вы дали ошибку, но есть ряд других вопросов, которые я хотел попросить, чтобы попытаться устранить это:

  • Вы читали документацию для Zend_Auth_Adapter_DbTable?

  • У вас есть действующее подключение к базе данных?

  • Какова структура вашего таблицы users?

  • Вы правильно указали столбцы идентификации и учетных данных для конструктора Zend_Auth_Adapter_DbTable?

  • Вы также указали имя пользователя/пароль, который вы пытаетесь выполнить проверку подлинности?

  • Каков SQL-запрос, вызывающий ошибку? Вы можете просмотреть в запросе таким образом:

    $select = $authAdapter->getDbSelect(); 
    print $select . "\n"; 
    
Смежные вопросы