0

我已按照 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
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 回答