<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.pdostatement.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'pdostatement.closecursor.php',
    1 => 'PDOStatement::closeCursor',
    2 => 'Закрывает курсор, переводя запрос в состояние готовности к повторному запуску',
  ),
  'up' => 
  array (
    0 => 'class.pdostatement.php',
    1 => 'PDOStatement',
  ),
  'prev' => 
  array (
    0 => 'pdostatement.bindvalue.php',
    1 => 'PDOStatement::bindValue',
  ),
  'next' => 
  array (
    0 => 'pdostatement.columncount.php',
    1 => 'PDOStatement::columnCount',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/pdo/pdostatement/closecursor.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="pdostatement.closecursor" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">PDOStatement::closeCursor</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.1.0, PHP 7, PHP 8, PECL pdo &gt;= 0.9.0)</p><p class="refpurpose"><span class="refname">PDOStatement::closeCursor</span> &mdash; <span class="dc-title">
   Закрывает курсор, переводя запрос в состояние готовности к повторному запуску
  </span></p>

 </div>
 <div class="refsect1 description" id="refsect1-pdostatement.closecursor-description">
  <h3 class="title">Описание</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>PDOStatement::closeCursor</strong></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


  <p class="para rdfs-comment">
   <span class="methodname"><strong>PDOStatement::closeCursor()</strong></span> освобождает соединение с сервером,
   давая возможность запускать другие SQL-запросы. Метод оставляет запрос в состоянии
   готовности к повторному запуску.
  </p>
  <p class="para">
   Этот метод полезен при использовании драйверов баз данных, которые не
   позволяют запустить PDOStatement, пока предыдущий объект PDOStatement не выберет
   все данные из результирующего набора. Если это ограничение распространяется
   на ваш драйвер, будет вызвана ошибка нарушения последовательности запросов
   (out-of-sequence error).
  </p>
  <p class="para">
   <span class="methodname"><strong>PDOStatement::closeCursor()</strong></span> может быть реализован как
   дополнительный метод конкретного драйвера (позволяющий добиться максимальной
   эффективности работы), либо как внутренний метод PDO, если такой функции в
   драйвере нет. Реализация внутреннего метода PDO семантически схожа с приведённой
   ниже:
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">do {<br />    while (</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch</span><span style="color: #007700">())<br />        ;<br />    if (!</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nextRowset</span><span style="color: #007700">())<br />        break;<br />} while (</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </p>

 </div>


 <div class="refsect1 parameters" id="refsect1-pdostatement.closecursor-parameters">
  <h3 class="title">Список параметров</h3>
  
<p class="para">
 Сигнатура функции не содержит параметров.
</p>

 </div>


 <div class="refsect1 returnvalues" id="refsect1-pdostatement.closecursor-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Функция возвращает <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, если выполнилась успешно, или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникла ошибка.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-pdostatement.closecursor-errors">
  <h3 class="title">Ошибки</h3>
  
 <p class="para">
  Метод выдаёт ошибку уровня <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>, если для атрибута <strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong>
  установили режим <strong><code><a href="pdo.constants.php#pdo.constants.errmode-warning">PDO::ERRMODE_WARNING</a></code></strong>.
 </p>
 <p class="para">
  Метод выбрасывает исключение <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span>, если для атрибута <strong><code><a href="pdo.constants.php#pdo.constants.attr-errmode">PDO::ATTR_ERRMODE</a></code></strong>
  установили режим <strong><code><a href="pdo.constants.php#pdo.constants.errmode-exception">PDO::ERRMODE_EXCEPTION</a></code></strong>.
 </p>

 </div>


 <div class="refsect1 examples" id="refsect1-pdostatement.closecursor-examples">
  <h3 class="title">Примеры</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Пример #1 
     Пример использования <span class="methodname"><strong>PDOStatement::closeCursor()</strong></span>
    </strong></p>
    <div class="example-contents"><p>
     В приведённом примере, объект PDOStatement <var class="varname">$stmt</var>
     возвращает несколько строк, однако приложение считывает только первую из них,
     оставляя объект PDOStatement в состоянии, когда есть ещё невыбранные строки.
     Чтобы быть уверенным в том, что приложение будет работать со всеми драйверами
     баз данных, автор добавил вызов метода
     <span class="methodname"><strong>PDOStatement::closeCursor()</strong></span> объекта
     <var class="varname">$stmt</var> перед тем как запустить другой запрос
     PDOStatement <var class="varname">$otherStmt</var>.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Создание объекта PDOStatement */<br /></span><span style="color: #0000BB">$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT foo FROM bar'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Создание другого объекта PDOStatement */<br /></span><span style="color: #0000BB">$otherStmt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prepare</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT foobaz FROM foobar'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Выполнение первого запроса */<br /></span><span style="color: #0000BB">$stmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* Выборка только первой строки результирующего набора первого запроса */<br /></span><span style="color: #0000BB">$stmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* Следующий вызов closeCursor() может быть обязательным для некоторых драйверов */<br /></span><span style="color: #0000BB">$stmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">closeCursor</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* теперь можно запускать второй запрос */<br /></span><span style="color: #0000BB">$otherStmt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execute</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-pdostatement.closecursor-seealso">
  <h3 class="title">Смотрите также</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="pdostatement.execute.php" class="methodname" rel="rdfs-seeAlso">PDOStatement::execute()</a> - Выполняет подготовленный запрос</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>