cel*_*owm 4 php sql-server pdo
我正在尝试使用准备好的语句通过参数传递值来设置偏移量和限制(下一行):
$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();
Run Code Online (Sandbox Code Playgroud)
返回错误:
为 TOP 或 FETCH 子句行计数参数提供的行数必须是整数。
但如果我尝试硬编码:
$statement = $pdo->prepare('SELECT * FROM livro ORDER BY id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY');
$statement->execute();
$livro = $statement->fetch();
Run Code Online (Sandbox Code Playgroud)
效果很好我知道使用mysql有必要PDO::ATTR_EMULATE_PREPARES => false在限制下工作。但我尝试使用 sqlsrv 并收到错误:
给定的属性仅在 PDOStatement 对象上受支持
有没有办法使用准备好的语句通过 PDO sqlsrv 设置获取和偏移值?
我的环境:Windows 10、PHP 7.3、MSSQL 2014
尝试这个:
$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();
Run Code Online (Sandbox Code Playgroud)