У меня есть следующее исключение Caught exception: The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.
У меня есть google и проверка моего кода снова и снова, но я не нашел решения. Имена таблиц и столбцов верны.Введенные параметры Zend_Auth_Adapter_DbTable не привели к действительным операторам sql
Раздел, вызывающий эту проблему, составляет $result = $auth->authenticate($authAdapter);
. Infact весь код контроллера находится ниже:
class AuthenticationController extends Zend_Controller_Action
{
public function init()
{
$uri = $this->_request->getPathInfo();
$activenav = $this->view->navigation()->findByUri($uri);
$activenav->active = true;
}
public function indexAction()
{
// action body
}
public function loginAction()
{
if(Zend_Auth::getInstance()->hasIdentity())
{
$this->_redirect('index/index');
}
$request = $this->getRequest();
$form = new Application_Form_LoginForm();
if($request->isPost())
{
if($form->isValid($this->_request->getPost()))
{
$authAdapter = $this->getAuthAdapter();
$username = $form->getValue('username');
$password = $form->getValue('password');
$authAdapter->setIdentity($username)
->setCredential($password);
$auth = Zend_Auth::getInstance();
try
{
$result = $auth->authenticate($authAdapter);
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
if ($result->isValid())
{
$identity = $authAdapter->getResultRowObject();
$authstorage = $auth->getStorage();
$authstorage->write($identity);
$this->_redirect('index/index');
}
else
{
$this->view->errorMessage = "User name or password is wrong";
}
}
}
$this->view->form = $form;
}
public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
$this->_redirect('index/index');
}
private function getAuthAdapter()
{
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
$authAdapter->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password')
->setCredentialTreatment('SHA1(CONCAT(?,salt))');
return $authAdapter;
}
}
Я застрял на этом в течение нескольких дней, и теперь его сводит меня с ума. BTW Как я могу эхо из реального sql, который генерируется? Спасибо всем
Casterama, спасибо за эту информацию. Я больше не работаю над этим проектом, но в следующий раз я обязательно использую маршрут UNHEX(). :) – Napoleon
могу ли я просто изменить тип данных на двоичный, даже если моя таблица пользователя уже заполнена строками? не нужно ли мне повторно вставлять в качестве двоичного кода, поэтому нужно изменить пароль для каждого пользователя, который нужно вставить? – binnyb