<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.ibm-db2.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'function.db2-bind-param.php',
    1 => 'db2_bind_param',
    2 => 'PHP 変数を SQL 文のパラメータにバインドする',
  ),
  'up' => 
  array (
    0 => 'ref.ibm-db2.php',
    1 => 'IBM DB2 関数',
  ),
  'prev' => 
  array (
    0 => 'function.db2-autocommit.php',
    1 => 'db2_autocommit',
  ),
  'next' => 
  array (
    0 => 'function.db2-client-info.php',
    1 => 'db2_client_info',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/ibm_db2/functions/db2-bind-param.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.db2-bind-param" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">db2_bind_param</h1>
  <p class="verinfo">(PECL ibm_db2 &gt;= 1.0.0)</p><p class="refpurpose"><span class="refname">db2_bind_param</span> &mdash; <span class="dc-title">
   PHP 変数を SQL 文のパラメータにバインドする
  </span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.db2-bind-param-description">
  <h3 class="title">説明</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>db2_bind_param</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$stmt</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$parameter_number</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$variable_name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$parameter_type</code><span class="initializer"> = <strong><code><a href="ibm-db2.constants.php#constant.db2-param-in">DB2_PARAM_IN</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$data_type</code><span class="initializer"> = 0</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$precision</code><span class="initializer"> = -1</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$scale</code><span class="initializer"> = 0</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


  <p class="simpara">
   <span class="function"><a href="function.db2-prepare.php" class="function">db2_prepare()</a></span> が返したステートメントリソース内の
   SQL 文のパラメータに PHP 変数をバインドします。
   <span class="function"><a href="function.db2-execute.php" class="function">db2_execute()</a></span> へのオプション配列の一部として
   変数を渡すのに比べ、この関数を使用すると
   パラメータの型、データの型、精度、位取りなどの詳細を制御できるようになります。
  </p>

 </div>

 <div class="refsect1 parameters" id="refsect1-function.db2-bind-param-parameters">
  <h3 class="title">パラメータ</h3>
  <dl>
   
    <dt><code class="parameter">stmt</code></dt>
    <dd>
     <span class="simpara">
      <span class="function"><a href="function.db2-prepare.php" class="function">db2_prepare()</a></span> が返すプリペアドステートメント。
     </span>
    </dd>
   
   
    <dt><code class="parameter">parameter_number</code></dt>
    <dd>
     <span class="simpara">
      プリペアドステートメントのパラメータの位置。
      1 から始まります。
     </span>
    </dd>
   
   
   <dt><code class="parameter">variable_name</code></dt>
    <dd>
     <span class="simpara">
      <code class="parameter">parameter_number</code> で指定したパラメータに
      バインドする PHP 変数の名前を表す文字列。
     </span>
    </dd>
   
   
    <dt><code class="parameter">parameter_type</code></dt>
    <dd>
     <span class="simpara">
      PHP 変数を SQL パラメータにバインドする際に
      入力パラメータとするのか (<strong><code><a href="ibm-db2.constants.php#constant.db2-param-in">DB2_PARAM_IN</a></code></strong>)
      出力パラメータとするのか (<strong><code><a href="ibm-db2.constants.php#constant.db2-param-out">DB2_PARAM_OUT</a></code></strong>)
      あるいは入出力両方を許可するのか
      (<strong><code><a href="ibm-db2.constants.php#constant.db2-param-inout">DB2_PARAM_INOUT</a></code></strong>) を指定する定数。
      メモリのオーバーヘッドを避けるため、<strong><code><a href="ibm-db2.constants.php#constant.db2-param-file">DB2_PARAM_FILE</a></code></strong>
      を指定して PHP 変数をファイルにバインドし、
      ファイルからラージオブジェクト (BLOB、CLOB あるいは DBCLOB)
      データを読み込むようにするすることも可能です。
     </span>
    </dd>
   
   
    <dt><code class="parameter">data_type</code></dt>
    <dd>
     <span class="simpara">
      PHP 変数をどの SQL データ型にバインドするのかを指定する定数。
      <strong><code><a href="ibm-db2.constants.php#constant.db2-binary">DB2_BINARY</a></code></strong>、
      <strong><code><a href="ibm-db2.constants.php#constant.db2-char">DB2_CHAR</a></code></strong>、<strong><code><a href="ibm-db2.constants.php#constant.db2-double">DB2_DOUBLE</a></code></strong> あるいは
      <strong><code><a href="ibm-db2.constants.php#constant.db2-long">DB2_LONG</a></code></strong> のうちのいずれか。
     </span>
    </dd>
   
   
    <dt><code class="parameter">precision</code></dt>
    <dd>
     <span class="simpara">
      変数をデータベースにバインドする際の精度を指定します。
      このパラメータは、ストアドプロシージャから
      XML 出力の値を取得する際にも使用します。
      非負の値を指定すると、それがデータベースから取得する
      XML データの最大サイズとなります。
      このパラメータを使用しない場合は、
      ストアドプロシージャから XML 出力を取得する際の最大サイズを
      デフォルトの 1MB とみなします。
     </span>
    </dd>
   
   
    <dt><code class="parameter">scale</code></dt>
    <dd>
     <span class="simpara">
      変数をデータベースにバインドする際の位取りを指定します。
     </span>
    </dd>
   
  </dl>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.db2-bind-param-returnvalues">
  <h3 class="title">戻り値</h3>
  <p class="simpara">
   成功した場合に <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 examples" id="refsect1-function.db2-bind-param-examples">
  <h3 class="title">例</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>例1 PHP 変数をプリペアドステートメントにバインドする</strong></p>
    <div class="example-contents"><p>
     以下の例の SQL 文では、WHERE 句の中で 2 つの入力パラメータを使用しています。
     この 2 つのパラメータに PHP 変数をバインドするために
     <span class="function"><strong>db2_bind_param()</strong></span> をコールします。
     <span class="function"><strong>db2_bind_param()</strong></span> をコールする前に
     PHP 変数を宣言したり代入したりする必要がないことに注意しましょう。
     この例では、<code class="literal">$lower_limit</code> については
     <span class="function"><strong>db2_bind_param()</strong></span> がコールされる前に
     値が代入されていますが、<code class="literal">$upper_limit</code> については
     <span class="function"><strong>db2_bind_param()</strong></span> をコールした後で代入されています。
     <span class="function"><a href="function.db2-execute.php" class="function">db2_execute()</a></span> をコールする前には、
     必ず変数をバインドしなければなりません。また、入力パラメータについては
     何らかの値を代入しておく必要があります。
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$sql </span><span style="color: #007700">= </span><span style="color: #DD0000">'SELECT name, breed, weight FROM animals<br />    WHERE weight &gt; ? AND weight &lt; ?'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$conn </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$database</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">, </span><span style="color: #0000BB">$sql</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// db2_bind_param() のコール前に変数を宣言できます<br /></span><span style="color: #0000BB">$lower_limit </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">"lower_limit"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_IN</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">"upper_limit"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_IN</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// また、db2_bind_param() をコールした後で変数を宣言することも可能です<br /></span><span style="color: #0000BB">$upper_limit </span><span style="color: #007700">= </span><span style="color: #0000BB">15.0</span><span style="color: #007700">;<br /><br />if (</span><span style="color: #0000BB">db2_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">)) {<br />    while (</span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">)) {<br />        print </span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]}</span><span style="color: #DD0000">, </span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]}</span><span style="color: #DD0000">, </span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]}</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>上の例の出力は以下となります。</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Pook, cat, 3.2
Rickety Ride, goat, 9.7
Peaches, dog, 12.3</pre>
</div>
    </div>
   </div>
   <div class="example" id="example-2">
    <p><strong>例2 IN および OUT パラメータを使用したストアドプロシージャのコール</strong></p>
    <div class="example-contents"><p>
     以下の例のストアドプロシージャ match_animal は、
     3 つのさまざまなパラメータを受け取ります。
     <ol type="1">
      <li class="listitem">
       <span class="simpara">
        最初の動物の名前を入力として受け取る
        入力 (IN) パラメータ。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        2 番目の動物の名前を入力として受け取り、その名前に一致する動物が
        データベースに存在する場合に文字列 <code class="literal">TRUE</code>
        を返す、入出力 (INOUT) パラメータ。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        指定した 2 匹の動物の合計体重を返す、出力 (OUT) パラメータ。
       </span>
      </li>
     </ol>
     さらにこのストアドプロシージャは結果セットを返します。その内容は、
     最初のパラメータで指定した動物から 2 番目のパラメータで指定した動物までの
     動物の一覧をアルファベット順に並べたものとなります。
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$sql </span><span style="color: #007700">= </span><span style="color: #DD0000">'CALL match_animal(?, ?, ?)'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$conn </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$database</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$password</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">, </span><span style="color: #0000BB">$sql</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #DD0000">"Peaches"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$second_name </span><span style="color: #007700">= </span><span style="color: #DD0000">"Rickety Ride"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$weight </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">"name"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_IN</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">"second_name"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_INOUT</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #DD0000">"weight"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_OUT</span><span style="color: #007700">);<br /><br />print </span><span style="color: #DD0000">"コール前のバインド変数の値:\n"</span><span style="color: #007700">;<br />print </span><span style="color: #DD0000">"  1: </span><span style="color: #007700">{</span><span style="color: #0000BB">$name</span><span style="color: #007700">}</span><span style="color: #DD0000"> 2: </span><span style="color: #007700">{</span><span style="color: #0000BB">$second_name</span><span style="color: #007700">}</span><span style="color: #DD0000"> 3: </span><span style="color: #007700">{</span><span style="color: #0000BB">$weight</span><span style="color: #007700">}</span><span style="color: #DD0000">\n\n"</span><span style="color: #007700">;<br /><br />if (</span><span style="color: #0000BB">db2_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">)) {<br />    print </span><span style="color: #DD0000">"コール後のバインド変数の値:\n"</span><span style="color: #007700">;<br />    print </span><span style="color: #DD0000">"  1: </span><span style="color: #007700">{</span><span style="color: #0000BB">$name</span><span style="color: #007700">}</span><span style="color: #DD0000"> 2: </span><span style="color: #007700">{</span><span style="color: #0000BB">$second_name</span><span style="color: #007700">}</span><span style="color: #DD0000"> 3: </span><span style="color: #007700">{</span><span style="color: #0000BB">$weight</span><span style="color: #007700">}</span><span style="color: #DD0000">\n\n"</span><span style="color: #007700">;<br /><br />    print </span><span style="color: #DD0000">"結果:\n"</span><span style="color: #007700">;<br />    while (</span><span style="color: #0000BB">$row </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">)) {<br />        print </span><span style="color: #DD0000">"  </span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]}</span><span style="color: #DD0000">, </span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]}</span><span style="color: #DD0000">, </span><span style="color: #007700">{</span><span style="color: #0000BB">$row</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]}</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>上の例の出力は以下となります。</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">コール前のバインド変数の値:
  1: Peaches 2: Rickety Ride 3: 0

コール後のバインド変数の値:
  1: Peaches 2: TRUE 3: 22

結果:
  Peaches, dog, 12.3
  Pook, cat, 3.2
  Rickety Ride, goat, 9.7</pre>
</div>
    </div>
   </div>
   <div class="example" id="example-3">
    <p><strong>例3 バイナリラージオブジェクト (BLOB) をファイルから直接挿入する</strong></p>
    <div class="example-contents"><p>
     ラージオブジェクトのデータは、通常は XML ドキュメントあるいは
     音声ファイルのようなファイルに保存されています。
     いったんファイルの内容を PHP 変数に読み込んだうえで SQL
     文にバインドする代わりに、ファイルを直接 sql 文の入力パラメータに
     バインドすることでメモリのオーバーヘッドを避けることができます。
     以下の例で、BLOB カラムにファイルを直接バインドする方法を説明します。
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$stmt </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_prepare</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">, </span><span style="color: #DD0000">"INSERT INTO animal_pictures(picture) VALUES (?)"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$picture </span><span style="color: #007700">= </span><span style="color: #DD0000">"/opt/albums/spook/grooming.jpg"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$rc </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_bind_param</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">"picture"</span><span style="color: #007700">, </span><span style="color: #0000BB">DB2_PARAM_FILE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$rc </span><span style="color: #007700">= </span><span style="color: #0000BB">db2_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stmt</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-function.db2-bind-param-seealso">
  <h3 class="title">参考</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.db2-execute.php" class="function" rel="rdfs-seeAlso">db2_execute()</a> - プリペアドステートメントを実行する</span></li>
   <li><span class="function"><a href="function.db2-prepare.php" class="function" rel="rdfs-seeAlso">db2_prepare()</a> - 実行する SQL 文を準備する</span></li>
  </ul>
 </div>


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