Zend framework Zend_Auth:不工作,getDbSelect()为空

Zend framework Zend_Auth:不工作,getDbSelect()为空,zend-framework,zend-auth,Zend Framework,Zend Auth,我的身份验证失败,当我尝试获取dbselect()时,什么也得不到。。。我做错了什么 class AuthController extends Zend_Controller_Action { protected $auth; public function init() { $db = $this->getInvokeArg("bootstrap")->getResource("db"); $this->auth = new Zend_

我的身份验证失败,当我尝试获取dbselect()时,什么也得不到。。。我做错了什么

class AuthController extends Zend_Controller_Action { protected $auth; public function init() { $db = $this->getInvokeArg("bootstrap")->getResource("db"); $this->auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)'); } public function loginAction() { if (isset($_POST["username"])) { $result = $this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')); echo " > " . $this->auth->getDbSelect();die(); $result = $this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')) ->authenticate(); if ($result->isValid()) { $this->_redirect("postLogin"); } } } 类AuthController扩展Zend\u控制器\u操作 { 受保护的$auth; 公共函数init() { $db=$this->getInvokeArg(“引导”)->getResource(“db”); $this->auth=new Zend\u auth\u Adapter\u DbTable($db,'users','username','password','md5(?); } 公共函数登录() { 如果(isset($_POST[“username”])){ $result=$this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')); echo“>”$this->auth->getDbSelect();die(); $result=$this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')) ->验证(); 如果($result->isValid()){ $this->_重定向(“postLogin”); } } } 更新1: 我也尝试过不使用MVC和MySQL,我更熟悉的是:

// setup auto loading require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); // setup db connection $db = new Zend_Db_Adapter_Pdo_Mysql(array( 'host' => '127.0.0.1', 'username' => 'root', 'password' => '', 'dbname' => 'learnZendAuth' )); // create authentication adapter $auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)'); // do login if request is posted if (isset($_POST) && !empty($_POST)) { // do authencation $result = $auth->setIdentity($_POST['username']) ->setCredential($_POST['password']) ->authenticate(); // check authentication valid if ($result->isValid()) { // login success echo "successfully logged in as: " . $result->getIdentity(); } else { // login fail echo "
";
        print_r($result->getMessages());
        echo "
//设置自动加载
需要_once'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
//设置数据库连接
$db=新的Zend_db_适配器_Pdo_Mysql(阵列)(
“主机”=>“127.0.0.1”,
'用户名'=>'根',
'密码'=>'',
“dbname”=>“learnZendAuth”
));
//创建身份验证适配器
$auth=new Zend_auth_Adapter_DbTable($db,'users','username','password','md5(?);
//如果请求已发布,请登录
如果(isset($\ U POST)和&!空($\ U POST)){
//作曲
$result=$auth->setIdentity($\u POST['username'])
->setCredential($\u POST['password']))
->验证();
//检查身份验证是否有效
如果($result->isValid()){
//登录成功
echo“已成功登录为:”..result->getIdentity();
}否则{
//登录失败
回声“;
打印($result->getMessages());
回声“;
}
}否则{
//请求未发布
//查看是否已登录
如果(Zend_Auth::getInstance()->hasIdentity()){
echo“已作为:”.Zend_Auth::getInstance()->getIdentity()登录;
}
}
我明白了

致命错误:未捕获异常 “Zend_Auth_Adapter_Exception”与 消息“将提供的参数 Zend_Auth_适配器_DbTable未能 请生成有效的sql语句 检查表名和列名是否存在错误 C:\Program文件中的有效性 (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php:414 堆栈跟踪:#0 C:\程序文件 (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php(306): Zend_Auth_Adapter_DbTable->_authenticateQuerySelect(对象(Zend_Db_Select))

1 C:\Program Files(x86)\Zend\Apache2\htdocs\learnZf\index.php(23): Zend_Auth_适配器_DbTable->authenticate()

在C:\ProgramFiles(x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php中抛出2{main} 在线414


尝试在is valid语句中移动getDbSelect, 我通常也用


为了获取用户信息,从未见过这个getDbSelect方法

哦,我发现我做错了什么

第一次尝试时,我使用了Sqlite,它不支持md5(?)处理

第二次尝试时,我指定了错误的列名…名称与用户名

$userInfo = $this->auth->getResultRowObject();