如何在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按预期工作。