gpt4 book ai didi

php - 第二次调用存储过程导致错误 SQLSTATE[HY000] : General error: 2014 Cannot execute queries in zf2

转载 作者:行者123 更新时间:2023-11-30 23:03:56 26 4
gpt4 key购买 nike

这是我的 Controller :

public function addAction()
{
if($this->getAuthService()->hasIdentity())
{
$this->layout('layout/adminDashboardLayout');
$request= $this->getRequest();
if($request->isPost())
{
$rowmaterial= new RowmaterialModel();

//Current User Id from Session
$session = new Container('user');
$userId = $session->offsetGet('userId');

$rowmaterial->setCode($request->getPost('category_alias'));
$rowmaterial->setCategory($request->getPost('category'));
$rowmaterial->setCreatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setUpdatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setCreatedBy($userId);
$this->getCategoryTable()->inserts($category);
}
$page = (int) $this->params()->fromRoute('page', 1);
$iteratorAdapter = new \Zend\Paginator\Adapter\ArrayAdapter(iterator_to_array($this->getRowmaterialTable()->fetchAll()));
$category = new \Zend\Paginator\Paginator($iteratorAdapter);
$viewModel= new ViewModel(array(
'fetchAllDatas' => $category->setCurrentPageNumber($page)->setItemCountPerPage('8'),
'categories' =>$this->getCategoryTable()->fetchAllCategoryStatusOn(),
'uom' => $this->getUomTable()->fetchAllUomStatusOn(),
'flashMessages' => $this->flashMessenger()->getMessages(),
));
return $viewModel;



}
else
{
$this->flashMessenger()->addMessage("Please Login");
return $this->redirect()->toRoute("admin");
}

这是我的第一个模型文件函数:

public function fetchAllCategoryStatusOn()
{
$statement= $this->adapter->query("call fetchAllCategoryStatusOn()");
$result= $statement->execute();
return $result;
}

这是我的第二个模型文件函数:

public function fetchAllUomStatusOn()
{
$statement= $this->adapter->query("call fetchAllUomStatusOn()");
$result= $statement->execute();
return $result;
}

在调用此 fetchAllUomStatusOn() 存储过程时将显示此错误

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries
are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only
ever going to run against mysql, you may enable query buffering by setting the
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

这是我的 global.php 文件:

return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=cp;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter'
=> 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
);

我做了很多搜索都没有得到正确答案,最后我得到了“closeCursor()”函数。我是这样使用这个函数的,

 public function fetchAllUomStatusOn()
{
$statement= $this->adapter->query("call fetchAllUomStatusOn()");
$statement->closeCursor();
$result = $statement->execute();
return $result;
}

通过使用这个函数会得到这个错误。

   Fatal error: Call to undefined method Zend\Db\Adapter\Driver\Pdo\Statement::closeCursor() in /var/www/cp/module/Admin/src/Admin/Model/UomTable.php on line 100. 

我的 php 版本是 5.4。所以请帮助我......这是我第一次尝试使用 Stackoverflow。抱歉我的英语不好。

最佳答案

我解决了这个错误。在 Controller 中使用 iterator_to_array() 函数。

public function addAction()
{
if($this->getAuthService()->hasIdentity())
{
$this->layout('layout/adminDashboardLayout');
$request= $this->getRequest();
if($request->isPost())
{
$rowmaterial= new RowmaterialModel();

//Current User Id from Session
$session = new Container('user');
$userId = $session->offsetGet('userId');

$rowmaterial->setCode($request->getPost('category_alias'));
$rowmaterial->setCategory($request->getPost('category'));
$rowmaterial->setCreatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setUpdatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setCreatedBy($userId);
$this->getCategoryTable()->inserts($category);
}
$page = (int) $this->params()->fromRoute('page', 1);
$iteratorAdapter = new \Zend\Paginator\Adapter\ArrayAdapter(iterator_to_array($this->getRowmaterialTable()->fetchAll()));
$category = new \Zend\Paginator\Paginator($iteratorAdapter);
$viewModel= new ViewModel(array(
'fetchAllDatas' => $category->setCurrentPageNumber($page)->setItemCountPerPage('8'),
'categories' => iterator_to_array($this->getCategoryTable()->fetchAllCategoryStatusOn()),
'uom' => iterator_to_array($this->getUomTable()->fetchAllUomStatusOn()),
'flashMessages' => $this->flashMessenger()->getMessages(),
));
return $viewModel;
}
else
{
$this->flashMessenger()->addMessage("Please Login");
return $this->redirect()->toRoute("admin");
}

关于php - 第二次调用存储过程导致错误 SQLSTATE[HY000] : General error: 2014 Cannot execute queries in zf2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com