在Zend 2中执行简单的查询问题

时间:2015-01-11 17:40:48

标签: zend-framework2

我想在zend 2中执行两个查询:

这是我的模型文件的内容:

 $email = $getData['login_email'];
        $password  = $getData['login_password'];
        $select = $this->adapter->query ("select count(*) as counter from users where email = '$email' and  password = '".md5($password)."'");
        $results = $select->execute();
        if ($results->current()['counter'] == 1 ){
          //  $update_user = $this->adapter->query("UPDATE users SET session_id = '".$session_id."' WHERE email = '".$email."'");
            try {
            $update_user = $this->adapter->query("select * from users");
            } catch (\Exception $e) {
                \Zend\Debug\Debug::dump($e->__toString()); exit;
            }
            $update_session = $update_user->execute();

出于某种原因,如果我删除一个随机查询,另一个将被执行。我知道这很奇怪,但我相信它有一个合理的答案。 try catch部分的结果是:

enter image description here

我没有写错了查询。如你所见,我尝试了一个简单的选择查询,我得到了相同的结果。其实我不知道这有什么不对。请帮助解决这个问题,我在过去的5-6天内在互联网上寻找答案,但我一无所获。如果您希望我提供更多信息,请询问。 THX

1 个答案:

答案 0 :(得分:0)

正如this answer所示,默认情况下,这是mysqli驱动程序使用无缓冲查询的问题。

要解决此问题,您必须在运行下一个查询之前缓冲第一个查询的结果。使用ZF2,Result接口有一个buffer()方法来实现:

$results = $select->execute();
$results->buffer();