PHP 7.2.0 Release Candidate 4 Released

PDOStatement::bindColumn

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::bindColumn カラムを PHP 変数にバインドする

説明

public bool PDOStatement::bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )

PDOStatement::bindColumn() は、 クエリからの結果セット中にあるカラムにバインドされた特定の値を 取得するための準備をします。 PDOStatement::fetch() もしくは PDOStatement::fetchAll() がコールされる度に、カラムにバインドされた全ての変数は更新されます。

注意:

カラムに関する情報はステートメントが実行されるまで常に PDO から利用できないため、移植可能なアプリケーションでは PDOStatement::execute(). の 後に この関数をコールするようにしてください。

しかし、LOB カラムをストリームにバインドする際に PgSQL ドライバ を使用するときには、 このメソッドを PDOStatement::execute()前に コールしなければなりません。 そうしないと、ラージオブジェクトの OID が integer で返されます。

パラメータ

column

結果セット中のカラム番号 (1 から始まる) を指定します。 カラム名を使用する場合、 ドライバによって返されるカラムの大文字小文字が一致する必要が あることをご承知おきください。

param

カラムがバインドされる PHP 変数名を指定します。

type

パラメータのデータ型を PDO::PARAM_* 定数 で指定します。

maxlen

領域を事前に確保するためのヒント。

driverdata

ドライバのオプションパラメータ。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 バインドした結果セットを PHP 変数に出力する

PHP 変数にバインドしている結果セットのカラムは、 アプリケーションで利用可能な各行に含まれるデータを作成するための 効果的な方法です。 以下のサンプルは、どうやって PDO が様々なオプションやを理にかなったデフォルト値を用いて カラムをバインド、取得するかを例示しています。

<?php
function readData($dbh) {
  
$sql 'SELECT name, colour, calories FROM fruit';
  try {
    
$stmt $dbh->prepare($sql);
    
$stmt->execute();

    
/* カラム番号によってバインドする */
    
$stmt->bindColumn(1$name);
    
$stmt->bindColumn(2$colour);
    
    
/* カラム名によってバインドする */
    
$stmt->bindColumn('calories'$cals);

    while (
$row $stmt->fetch(PDO::FETCH_BOUND)) {
      
$data $name "\t" $colour "\t" $cals "\n";
      print 
$data;
    }
  }
  catch (
PDOException $e) {
    print 
$e->getMessage();
  }
}
readData($dbh);
?>

上の例の出力は以下となります。

apple   red     150
banana  yellow  175
kiwi    green   75
orange  orange  150
mango   red     200
strawberry      red     25

参考

add a note add a note

User Contributed Notes 1 note

up
-56
Spaceeman
2 years ago
// What I've added function :
//
function PDO_statement_bind_columns(
        $statement, &$var1,
        &$var2 = null, &$var3 = null, &$var4 = null, &$var5 = null, &$var6 = null,  &$var7 = null,
        &$var8 = null, &$var9 = null, &$var10 = null, &$var11 = null, &$var12 = null, &$var13 = null,
        &$var14 = null, &$var15 = null, &$var16 = null, &$var17 = null, &$var18 = null, &$var19 = null,
        &$var20 = null, &$var21 = null, &$var22 = null, &$var23 = null, &$var24 = null, &$var25 = null,
        &$var26 = null, &$var27 = null, &$var28 = null, &$var29 = null, &$var30 = null, &$var31 = null,
        &$var32 = null, &$var33 = null, &$var34 = null, &$var35 = null, &$var36 = null, &$var37 = null,
        &$var38 = null, &$var39 = null, &$var40 = null, &$var41 = null, &$var42 = null, &$var43 = null
    )
    {
        $numargs = func_num_args();
        for( $i = 1 ; $i < $numargs ; ++$i )
        {
            $argname = 'var'.$i;           
            if( ! $statement->bindColumn( $i, $$argname ) ) throw new \Exception("statement->bindColumn $i");
        }
    }
To Top