<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Author" content="Zend Japan">
<meta http-equiv="Description" content="Prepare及びbind使用例">
<title>sample05</title>
</head>
<body>
<?php
//DB接続
require_once 'inc/dbconn.inc';

//改行
$eol = "\r\n";

//テスト用PF
$test_pf = 'ZTESTF';

//テストパラメーター
$test_prm1 = 'A001';
$test_prm2 = 'A003';

$query = 'SELECT ' .
'RTRIM(COLA) AS COLA, ' .
'RTRIM( CAST( COLO AS CHAR(18) ) ) AS COLO, ' .
'RTRIM( CAST( COLJ AS CHAR(18) ) ) AS COLJ, ' .
'COLP, ' .
'COLS  ' .
'FROM ' .
$test_pf .
' WHERE COLA BETWEEN ? AND ? ';

$stmt = db2_prepare($db_con, $query);
if(!$stmt){
	echo 'Prepareできませんでした<br>';
	echo db2_stmt_errormsg();

	db2_close($db_con);
    echo '</body></html>';
    return;
}

//下記のほかにパラメータの精度も指定出来ます
db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN, DB2_CHAR);
db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN, DB2_CHAR);

$lower_limit = $test_prm1;
$upper_limit = $test_prm2;

$result = db2_execute($stmt);
if(!$result){
	echo 'SQLが実行できませんでした<br>';
	echo db2_stmt_errormsg();

	db2_close($db_con);
    echo '</body></html>';
    return ;
}

echo '<table border=1>' . $eol;
echo '<tr><th>COLA</th><th>COLO</th><th>COLJ</th><th>COLP</th><th>COLS</th></tr>' . $eol;

while(db2_fetch_row($stmt)) {
    $cola = db2_result($stmt, 'COLA');
    $colo = db2_result($stmt, 'COLO');
    $colj = db2_result($stmt, 'COLJ');
    $colp = db2_result($stmt, 'COLP');
    $cols = db2_result($stmt, 'COLS');

    echo '<tr>';
    echo '<td>'. $cola . '</td>';
    echo '<td>'. $colo . '</td>';
    echo '<td>'. $colj . '</td>';
    echo '<td>'. $colp . '</td>';
    echo '<td>'. $cols . '</td>';
    echo '</tr>' . $eol;
}

echo '</table>';

db2_close($db_con);

//データ取得のTips
//データベースの中に数値が文字列で格納されている場合、
//SQLでは何もせずにphpスクリプトに渡すことをお勧めします
//SQLのDIGITS関数を使って文字列を数値に変換すると、
//php実行エンジンが受け取るSQL結果は1項目63バイトに
//増大します。
?>
</body>
</html>