为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用准备好的语句通过 PDO sqlsrv 设置获取和偏移值?

如何使用准备好的语句通过 PDO sqlsrv 设置获取和偏移值?

PHP
慕雪6442864 2021-07-02 14:07:19
我正在尝试使用准备好的语句使用参数传递值来设置偏移量和限制(下一行):$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();


查看完整回答
反对 回复 2021-07-09
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信