【发布时间】:2012-10-18 07:51:00
【问题描述】:
我已按照 zend 说明使用配置了 Mysqli 驱动程序的数据库表来实现我的 Web 身份验证。
在渲染页面时,执行authenticate方法后出现如下异常:
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
这似乎是因为驱动程序在不首先释放前一个查询的结果的情况下无法执行多个查询(多查询问题)。
我发现如果将 dbAdapter 的驱动程序更改为 pdo_mysql,authenticate 方法可以正常工作。但出于性能原因,我不想使用 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
【问题讨论】:
标签: mysqli zend-framework2 zend-auth mysqli-multi-query