在 Zend 2 中执行简单的查询问题
Executing simple query issue in Zend 2
我想在 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部分的结果是:
我没有写错查询。如您所见,我尝试了一个简单的 select 查询,但得到了相同的结果。其实我不知道这有什么问题。请帮助解决这个问题,我在过去 5-6 天内在互联网上寻找答案,但我一无所获。如果您希望我提供更多信息,请询问。谢谢
正如 this answer 所暗示的,这是默认情况下使用无缓冲查询的 mysqli 驱动程序的问题。
要解决此问题,您必须在 运行 下一个查询之前缓冲第一个查询的结果。对于 ZF2,Result 接口有一个 buffer() 方法来实现这一点:
$results = $select->execute();
$results->buffer();
我想在 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部分的结果是:
我没有写错查询。如您所见,我尝试了一个简单的 select 查询,但得到了相同的结果。其实我不知道这有什么问题。请帮助解决这个问题,我在过去 5-6 天内在互联网上寻找答案,但我一无所获。如果您希望我提供更多信息,请询问。谢谢
正如 this answer 所暗示的,这是默认情况下使用无缓冲查询的 mysqli 驱动程序的问题。
要解决此问题,您必须在 运行 下一个查询之前缓冲第一个查询的结果。对于 ZF2,Result 接口有一个 buffer() 方法来实现这一点:
$results = $select->execute();
$results->buffer();