Mysqli ドライバーが構成されたデータベース テーブルを使用して Web 認証を実装するための zend の指示に従いました。
ページをレンダリングすると、認証メソッドの実行後に次の例外が表示されます。
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