0

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
4

1 に答える 1

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

于 2013-01-23T20:19:51.297 に答える