2016-03-03 30 views
0

調用Zend框架2的存儲過程時,它發出一個錯誤消息,如何解決此問題,PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY錯誤發生的歷史而調用存儲過程在ZF2

$dbAdapter = $e->getApplication()->getServiceManager()->get('Zend\Db\Adapter\Adapter'); 
    $results = $dbAdapter->query("CALL PROCEDURE_NAME('PARAM1')"); 
    $DataSource = $results->execute(); 
    $Statement = $DataSource->getResource(); 
    $Result = $Statement->fetchAll(\PDO::FETCH_OBJ); 

上面的代碼是使用獲得存儲過程的信息

得到以下錯誤

聲明不能被執行(HY000 - 2014 - 不能同時其他無緩衝查詢是主動執行查詢或者,如果考慮使用PDOStatement對象::使用fetchall()你的。代碼只曾經打算對MySQL的運行,你可以通過設置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY屬性啓用查詢緩存。)

+0

看看http://php.net/manual/en/ref.pdo-mysql.php它會給你關於你的錯誤的信息。 – Ukuser32

+0

我可以在上面添加MYSQL_ATTR_USE_BUFFERED_QUERY代碼? –

+0

解決了我的問題,我只是在取得結果後放了closeCursor –

回答

0

解決我的問題,我只是把closeCursor獲取結果後

$dbAdapter = $e->getApplication()->getServiceManager()->get('Zend\Db\Adapter\Adapter'); 
$results = $dbAdapter->query("CALL PROCEDURE_NAME('PARAM1')"); 
$DataSource = $results->execute(); 
$Statement = $DataSource->getResource(); 
$Result = $Statement->fetch(\PDO::FETCH_OBJ); 
$Statement->closeCursor(); 

謝謝Ukuser32支持我找到解決方案

+0

你最好使用[nextRowset](https://phpdelusions.net/pdo#call) –

+0

沒問題,很高興我可以幫忙:) – Ukuser32