我正在尝试使用准备好的语句使用参数传递值来设置偏移量和限制(下一行):$statement = $pdo->prepare('SELECT * FROM livro ORDER BY id OFFSET :offset ROWS FETCH NEXT :limit ROWS ONLY');$statement->execute(['offset' => 0, 'limit' => 5]);$livro = $statement->fetch();错误返回:为 TOP 或 FETCH 子句行计数参数提供的行数必须是整数。但如果我尝试硬编码:$statement = $pdo->prepare('SELECT * FROM livro ORDER BY id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY');$statement->execute();$livro = $statement->fetch();效果很好我知道使用 mysql 有必要使用PDO::ATTR_EMULATE_PREPARES => false限制工作。但我尝试使用 sqlsrv 并出现错误:给定的属性仅在 PDOStatement 对象上受支持有没有办法使用准备好的语句通过 PDO sqlsrv 设置获取和偏移值?我的环境:Windows 10、PHP 7.3、MSSQL 2014
2 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
试试这个:
$statement = $pdo->prepare('SELECT * FROM livro ORDER BY id OFFSET CAST(:offset AS INT) ROWS FETCH NEXT CAST(:limit AS INT) ROWS ONLY');
$statement->execute(['offset' => 0, 'limit' => 5]);
$livro = $statement->fetch();
- 2 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消