<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/pdo.drivers.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'ref.pdo-odbc.php',
    1 => 'PDO-драйвер СУБД ODBC и DB2',
    2 => 'PDO_ODBC: драйвер модуля PDO для СУБД ODBC и DB2',
  ),
  'up' => 
  array (
    0 => 'pdo.drivers.php',
    1 => 'Драйверы модуля PDO',
  ),
  'prev' => 
  array (
    0 => 'ref.pdo-oci.connection.php',
    1 => 'DSN-строка подключения через драйвер PDO_OCI',
  ),
  'next' => 
  array (
    0 => 'ref.pdo-odbc.connection.php',
    1 => 'DSN-строка подключения через драйвер PDO_ODBC',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/pdo_odbc/reference.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/ref.pdo-odbc.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="ref.pdo-odbc" class="reference">
 
 <h1 class="title">PDO_ODBC: драйвер модуля PDO для СУБД ODBC и DB2</h1>
 
 <div class="partintro">

  <div class="section" id="ref.pdo-odbc.intro">
   <h2 class="title">Введение</h2>
   <p class="para">
    PDO_ODBC — драйвер, через который PHP получает доступ к базам данных,
    совместимым с драйверами ODBC (англ. сокр.: Open Database Connectivity) или библиотекой
    IBM DB2 Call Level Interface (DB2 CLI).
    Для этого драйвер реализует интерфейс модуля <a href="book.pdo.php#intro.pdo" class="link">PDO</a>.
    Драйвер PDO_ODBC поддерживает три вида драйверов баз данных:
    <dl>
     
      <dt>ibm-db2</dt>
      <dd>
       <p class="para">
        Драйвер поддерживает доступ к серверам IBM DB2 Universal Database, Cloudscape и Apache
        Derby через свободный клиент DB2 express-C.
       </p>
      </dd>
     
     
      <dt>unixODBC</dt>
      <dd>
       <p class="para">
        Драйвер поддерживает доступ к базам данных через менеджер драйверов unixODBC
        и собственные ODBC-драйверы баз данных.
       </p>
      </dd>
     
     
      <dt>generic</dt>
      <dd>
       <p class="para">
        Драйвер предлагает опцию компиляции для менеджеров ODBC-драйверов,
        которые драйвер PDO_ODBC не поддерживает явно.
       </p>
      </dd>
     
    </dl>
   </p>
   <p class="para">
    В операционной системе Windows библиотеку <var class="filename">php_pdo_odbc.dll</var> включают
    как модуль в файле <var class="filename">php.ini</var>. Библиотека связана с диспетчером драйверов Windows ODBC Driver Manager,
    поэтому PHP доступны подключения к любой базе данных, которую занесли в каталог
    как системное имя источника данных System DSN.
   </p>
  </div>

   
   



<div class="section" id="ref.pdo-odbc.installation">
 <h2 class="title">Установка</h2>
 <div class="procedure">
  <strong class="title">PDO_ODBC на UNIX системах</strong>
  <ol type="1"><li>
   <p class="para">
    Модуль PDO_ODBC включён в исходный код PHP.
    Вы можете скомпилировать модуль как статический или разделяемый,
    используя следующий синтаксис <strong class="command">configure</strong>.
    <dl>
     
      <dt>ibm_db2</dt>
      <dd>
       <p class="para">
<div class="example-contents screen"><div class="cdata"><pre>
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
</pre></div></div>
        Для сборки PDO_ODBC для ibm-db2 вам потребуется предварительно
        установить заголовочные файлы пакета разработчика приложений
        DB2. Заголовочные файлы пакета разработчика приложений DB2 можно
        установить как с помощью установочного пакета сервера DB2, так и в
        составе отдельного клиента &quot;DB2 Application Development Client&quot;, доступного
        для загрузки с <a href="https://www.ibm.com/developerworks/downloads/im/db2express/index.html" class="link external">&raquo;&nbsp;сайта поддержки</a>
        IBM developerWorks.
       </p>
       <p class="para">
        Если вы не укажете директорию установки библиотек и заголовочных файлов DB2,
        <strong class="command">configure</strong> будет искать их в
        <var class="filename">/home/db2inst1/sqllib</var>.
       </p>
      </dd>
     
     
      <dt>unixODBC</dt>
      <dd>
       <p class="para">
<div class="example-contents screen"><div class="cdata"><pre>
./configure --with-pdo-odbc=unixODBC,/usr/local
</pre></div></div>
        Если вы не укажете директорию установки библиотек и заголовочных файлов unixODBC,
        <strong class="command">configure</strong> будет искать их в
        <var class="filename">/usr/local</var>.
       </p>
      </dd>
     
     
      <dt>generic</dt>
      <dd>
<div class="example-contents screen"><div class="cdata"><pre>
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
</pre></div></div>
      </dd>
     
    </dl>
   </p>
  </li>
 </ol></div>
</div>


   
   


<div class="section" id="pdo-odbc.global.constants">
 <h2 class="title">Предопределённые константы</h2>
 <p class="simpara">Драйвер
определяет следующие константы и открывает доступ к ним только тогда, когда PHP собрали
с поддержкой этого модуля, или модуль динамически загрузили при выполнении кода.
Константы, которые зависят от драйвера, разрешается использовать только совместно с драйвером.
Атрибуты одного драйвера с другим драйвером ведут себя неожиданно. Чтобы проверить название
драйвера, которое содержит атрибут <strong><code><a href="pdo.constants.php#pdo.constants.attr-driver-name">PDO::ATTR_DRIVER_NAME</a></code></strong>, вызывают
метод <span class="function"><a href="pdo.getattribute.php" class="function">PDO::getAttribute()</a></span>, если код запускается с несколькими драйверами.</p>
 <dl>
  
   <dt id="constant.pdo-odbc-type">
    <strong><code><a href="ref.pdo-odbc.php#constant.pdo-odbc-type">PDO_ODBC_TYPE</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <p class="para">

    </p>
   </dd>
  
  
   <dt id="pdo.constants.odbc-attr-use-cursor-library">
    <strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-attr-use-cursor-library">PDO::ODBC_ATTR_USE_CURSOR_LIBRARY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Псевдоним <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.attr-use-cursor-library">Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.odbc-sql-use-if-needed">
    <strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-if-needed">PDO::ODBC_SQL_USE_IF_NEEDED</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Псевдоним <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-if-needed">Pdo\Odbc::SQL_USE_IF_NEEDED</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.odbc-sql-use-driver">
    <strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-driver">PDO::ODBC_SQL_USE_DRIVER</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Псевдоним <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-driver">Pdo\Odbc::SQL_USE_DRIVER</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.odbc-sql-use-odbc">
    <strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-sql-use-odbc">PDO::ODBC_SQL_USE_ODBC</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Псевдоним <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.sql-use-odbc">Pdo\Odbc::SQL_USE_ODBC</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.odbc-attr-assume-utf8">
    <strong><code><a href="ref.pdo-odbc.php#pdo.constants.odbc-attr-assume-utf8">PDO::ODBC_ATTR_ASSUME_UTF8</a></code></strong>
    (<span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Псевдоним <strong><code><a href="class.pdo-odbc.php#pdo-odbc.constants.attr-assume-utf8">Pdo\Odbc::ATTR_ASSUME_UTF8</a></code></strong>.
    </span>
   </dd>
  
 </dl>
</div>


   
   



<div class="section" id="pdo-odbc.configuration">
 <h2 class="title">Настройка во время выполнения</h2>
 <p class="simpara">
Поведение функций зависит от установок в файле <var class="filename">php.ini</var>.
</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Конфигурационные опции PDO_ODBC</strong></caption>
   
    <thead>
     <tr>
      <th>Имя</th>
      <th>По умолчанию</th>
      <th>Место изменения</th>
      <th>Список изменений</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="ref.pdo-odbc.php#ini.pdo-odbc.connection-pooling" class="link">pdo_odbc.connection_pooling</a></td>
      <td>&quot;strict&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="ref.pdo-odbc.php#ini.pdo-odbc.db2-instance-name" class="link">pdo_odbc.db2_instance_name</a></td>
      <td>NULL</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td>
Функция устарела и ее <em>удалят</em> в будущем.</td>
     </tr>

    </tbody>
   
  </table>

  Дополнительную информацию и определения режимов
INI_* даёт раздел «<a href="configuration.changes.modes.php" class="xref">Места установки параметров конфигурации</a>».
 </p>

 <p class="para">Краткое разъяснение конфигурационных
директив.</p>

 <p class="para">
  <dl>
   
    <dt id="ini.pdo-odbc.connection-pooling">
     <code class="parameter">pdo_odbc.connection_pooling</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="para">
      Нужно ли объединять соединения ODBC. Может быть <code class="literal">&quot;strict&quot;</code>,
      <code class="literal">&quot;relaxed&quot;</code> или <code class="literal">&quot;off&quot;</code> (аналогично
      <code class="literal">&quot;&quot;</code>). Параметр определяет как строго менеджер соединений
      должен сравнивать параметры соединений для выбора, создавать новое соединение или
      возвращать уже существующее. По умолчанию рекомендуется использовать
      <strong class="userinput"><code>strict</code></strong>, что означает, что сохранённое соединение будет
      возвращаться только, если все параметры точно совпадают.
      <strong class="userinput"><code>relaxed</code></strong> приведёт к тому, что закешированное соединение
      будет возвращено, если параметры схожи. Это приведёт к более активному
      использованию кеша, но может привести к утечке информации о соединении
      (к примеру) между виртуальными хостами.
     </p>
     <p class="para">
      Эту настройку можно изменить только в <var class="filename">php.ini</var> и воздействует на все процессы;
      все модули, загруженные в процесс и использующие те же библиотеки ODBC
      будут зависеть от этой настройки, включая <a href="ref.uodbc.php" class="link">Унифицированный
      модуль ODBC</a>.
     </p>
     <div class="warning"><strong class="warning">Внимание</strong>
      <p class="para">
       Значение <strong class="userinput"><code>relaxed</code></strong> не должно использоваться на
       общем хостинге в целях безопасности.
      </p>
     </div>
     <div class="tip"><strong class="tip">Подсказка</strong>
      <p class="para">
       Если у вас нет очень серьёзного повода использовать значение, отличное от
       <strong class="userinput"><code>strict</code></strong> - не меняйте его.
      </p>
     </div>
    </dd>
  
  
   <dt id="ini.pdo-odbc.db2-instance-name">
    <code class="parameter">pdo_odbc.db2_instance_name</code>
    <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
   </dt>
   <dd>
    <p class="para">
     Если вы скомпилировали PDO_ODBC с использованием <code class="literal">db2</code>,
     эта опция установит значение переменной окружения DB2INSTANCE в
     системах Linux и UNIX, равным выбранному имени экземпляра DB2.
     Это позволяет PDO_ODBC определить местоположение библиотек DB2
     и произвести соединение с каталогом базы данных DB2.
    </p>
    <p class="para">
     Эту настройку можно изменить только в <var class="filename">php.ini</var>, и она воздействует на все процессы;
     все модули, загруженные в процесс и использующие те же библиотеки ODBC
     будут зависеть от этой настройки, включая <a href="ref.uodbc.php" class="link">унифицированный
     модуль ODBC</a>.
    </p>
    <p class="para">
     Эта опция не работает в Windows.
    </p>
   </dd>
  

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


 </div>

 

<h2>Содержание</h2><ul class="chunklist chunklist_reference"><li><a href="ref.pdo-odbc.connection.php">DSN-строка подключения через драйвер PDO_ODBC</a> — Соединение с базами данных ODBC или DB2</li></ul>
</div>
<?php manual_footer($setup); ?>