我已按照 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,则验证方法可以正常工作。但出于性能原因,我不想使用 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