我已经按照zend说明使用配置了Mysqli驱动程序的数据库表来实现我的Web身份验证。
渲染页面时,执行验证方法后会出现以下异常:
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
答案 0 :(得分: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引用此页面,因为我正在努力学习如何自己动手