В верхней части моей php-страницы я включаю скрипт подключения, который называется:
include("connector.php")
Connector.php
<?php
try
{
$db = new PDO('mysql:host=localhost;dbname=DB', 'USER', 'PW');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
echo $e->getMessage();
}
?>
Затем я делаю все последующие звонки на своих страницах по мере необходимости. В частности, на одной странице я первоначально делаю вызов хранимой процедуры MySQL:
$stmt = $db->prepare("CALL Procedure(:id)");
$stmt->bindParam(':id', $id);
$stmt->execute();
while($row=$stmt->fetch()) {
echo "<tr>
<td>".$row['ID']."</td>
<td>".$row['NAME']."</td>
</tr>";
}
Нет проблем с моей хранимой процедурой, но когда я пытаюсь выполнить какие-либо последующие вызовы, когда я пытаюсь выполнить любые последующие вызовы, появляется обычная ошибка небуферизованных запросов PDO Mysql:
Неустранимая ошибка: необработанное исключение
'PDOException' с сообщением
'SQLSTATE [HY000]: общая ошибка: 2014
Невозможно выполнить запросы, пока другие
небуферизованные запросы активны.
Рассмотреть возможность использования
PDOStatement :: fetchAll ().
В качестве альтернативы, если ваш код только
когда-нибудь побежишь против mysql, ты
может включить буферизацию запроса, установив
PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY
атрибут «. в
C: \ page.php: 261
Трассировка стека: # 0
C: \ page.php (261):
PDOStatement-> execute (Array) # 1 {main}
брошенный в
C: \ page.php
по линии 261
Да, я пытался использовать FetchAll, и НЕТ, я не хочу использовать атрибут PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY, так как мы можем отключить MySQL в более поздний момент времени, и я не хочу перестраивать на основе каждой БД (не упомянуть, даже когда я включил это не работает).
Есть идеи, почему это может происходить? Я мог бы «включить» файл connector.php перед каждым вызовом БД, но это кажется повторяющимся, и мне пришлось бы $ db-> NULL для каждого оператора.
Примечание: похоже, это влияет только на страницы с вызовами в хранимые процедуры. Есть идеи?
Примечание: это выполняется на компьютере Windows с XAMPP 1.7.3 под управлением Apache 2.2.14, PHP 5.3.1