2012-10-28 119 views
0

我已经遵循zend的说明来实现我的web身份验证,使用配置了mysqli驱动程序的数据库表。zend框架2使用mysqli失败的身份验证

当渲染页面,下面会出现异常后执行的身份验证方法:

Zend\Db\Adapter\Exception\ErrorException 
    File: 
    C:\xampp\htdocs\pfc\vendor\ZF2\library\Zend\Db\Adapter\Driver\Mysqli\Statement.php:188 
    Mensaje: 
    Commands out of sync; you can't run this command now 

这似乎是它发生,因为司机不能够执行倍数querys没有自由先前查询的结果首先(多查询问题)。

我发现,如果改变将对DBAdapter的司机PDO_MYSQL,验证方法效果好。但我不希望出于性能原因使用PDO驱动程序。

如何配置Mysqli驱动程序可以做到这一点?

我的代码波纹管:

$dbAdapter = new DbAdapter(array(
     //'driver' => 'Mysqli', //This driver fail when call authenticate method 
     'driver' => 'Pdo_Mysql', //This driver works ok 
     'database' => 'securedraw', 
     'username' => 'root', 
     'password' => '' 
    ));  
    $authAdapter = new AuthDbTableAdapter($dbAdapter); 
    $authAdapter->setTableName('users') 
       ->setIdentityColumn('mail') 
       ->setCredentialColumn('password') 
       ->setIdentity('josep') 
       ->setCredential('josep'); 
    $authResult = $authAdapter->authenticate(); //Method fail 

回答

0

我敢肯定有什么问题是,你是混合起来的方式执行查询。所以,你有什么是一个PDO通话,并使用库MySQLi你需要做的

$dbAdapter = new DbAdapter(array(
    'driver' => 'Mysqli', //This driver fail when call authenticate method 
    'database' => 'securedraw', 
    'username' => 'root', 
    'password' => '' 
));  
$adapter = new Zend\Db\Adapter\Adapter($configArray); 

$adapter->query("QUERY HERE"); 

我会在这里引用此页面https://packages.zendframework.com/docs/latest/manual/en/modules/zend.db.adapter.html因为我想学习如何做到这一点我自己