如何在SELECT for DB2中将PHP db2_bind_param与LIMIT和OFFSET一起使用

时间:2017-09-06 16:28:46

标签: php db2

如何在PHP中的select语句值中传递LIMIT和OFFSET?

此代码示例基于PHP手册,DB2示例。它使用db2_execute示例中的animals数据库构建:

$conn = db2_connect($database,$user,$passwd);
if ($conn) {
  $sql = "select * from ANIMALS order by BREED " .
        "LIMIT ? OFFSET ?";
  $stmt = db2_prepare($conn, $sql);
  if ($stmt) {
$the_limit = 3;
$the_offset = 2;
db2_bind_param($stmt, 1, "the_limit", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "the_offset", DB2_PARAM_IN);
    $result = db2_execute($stmt);
    if (!$result) {
      echo "level 2 exec error: " .db2_stmt_error($stmt) . "
      errormsg: " .db2_stmt_errormsg($stmt);
    }
    while ($row = db2_fetch_assoc($stmt)) {
       echo $row['BREED'] . '  ' . $row['NAME'] . '  ' . $row
         ['WEIGHT'] . "\n";  
    }
} else {
      echo "level 1 exec error: " .db2_stmt_error($stmt) . " errormsg: " . 
         db2_stmt_errormsg($stmt);
}
db2_close($conn);
} else {
   echo "connect error ".db2_conn_error() . " failed ".db2_conn_errormsg();
}

此示例导致07006错误代码,描述为“无法使用输入变量,转换变量或参数标记, 因为它的数据类型。“

PHP正在IBM I System(AS400),Zend Server 8.5上运行。操作系统是版本7,版本1. PHP是5.6.10。 IBM DB2模块是1.9.7。

LIMIT和OFFSET至少部分支持,因为将语句更改为... LIMIT 3 OFFSET 2按预期工作。

0 个答案:

没有答案