zend framework 2使用mysqli进行身份验证失败

时间:2012-10-28 23:38:22

标签: mysqli zend-framework2 zend-auth mysqli-multi-query

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

1 个答案:

答案 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引用此页面,因为我正在努力学习如何自己动手