sql-server - Zend DB Framework3 SQL Server 选择限制
问题描述
我正在使用 Zend DB SQL Abstraction 来查询几个不同的数据库。在大多数情况下,我可以为 select 语句添加限制,但它不适用于 SQL Server。
$limit = 10; // this is actually coming in from the calling code
$options = array(
'driver' => 'sqlsrv',
'hostname' => '<hostname>',
'database' => '<schema>',
'username' => '<username>',
'password' => '<password>',
);
$db = new Zend\Db\Adapter\Adapter($options);
$sql = new Zend\Db\Sql\Sql($db);
$select = $sql->select(<table name>);
$select->columns([<columns>]);
$where = new \Zend\Db\Sql\Where(<zero or more where statements>);
$select->where($where);
if($limit > 0) {
$select->limit($limit);
}
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
当我运行这个时,我得到一个错误
无法执行语句(42000 - 102 - [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'LIMIT' 附近的语法不正确。)
当我输出$select->getSqlString($db->getPlatform())
我得到
SELECT [字段名] FROM [表名] WHERE [where 子句] LIMIT 10
当我期待
SELECT TOP 10 [字段名称] FROM [表名称] WHERE [where 子句]
我在这方面缺少什么?
解决方案
推荐阅读
- android - 带有自定义拇指和间隔文本 Android 的 Seekbar
- sql - 如何从 PostgreSQL 中的 WITH 返回 EXCLUDED?
- css - PrimeNG v10.0.0,当 [responsive]='true' 并且网格响应时,p-table 页脚消失
- python - Python OpenCV.fillPoly() 没有填充我的多边形。为什么?
- python - 在 Python 3.8 中加载使用 Python 2.7 创建的泡菜文件时出错
- c# - 文件解析以获取特定信息
- jenkins - JENKINS - GROOVY - PIPELINE:如何在构建过程中检索密码时从日志中隐藏密码
- python-3.x - 从Django中的超类模型中排除子类模型的数据
- javascript - JavaScript for-loop 分离值并返回它
- html - 选择 CSS 中的任何同级