Zend DB Framework3 SQL Server选择限制

时间:2018-11-30 18:07:25

标签: sql-server php-7 zend-db zend-framework3

我正在使用Zend DB SQL抽象来查询几个不同的数据库。在大多数情况下,我可以为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] [SQL Server的ODBC驱动程序17] [SQL Server]“ LIMIT”附近的语法不正确。)

我输出$select->getSqlString($db->getPlatform())时得到

  

从[表名]中选择[字段名]在[where子句]限制10

当我期望

  

SELECT TOP 10 [字段名]从[表名]在[where子句]

我在这方面想念什么?

0 个答案:

没有答案