【问题标题】:zend framework 2 Authentication with mysqli failzend 框架 2 使用 mysqli 进行身份验证失败
【发布时间】:2012-10-18 07:51:00
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我很确定问题在于您混淆了执行查询的方式。所以你有一个 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,因为我正在尝试自己学习如何做到这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多