0

我有一个在 mssql 编辑器上运行良好的公用表表达式。但是,当我在 PHP 中使用相同的填充字符串变量并使用odbc_exec($dbhandle,$query )它时,不会返回任何行。没有错误被抛出。这是对 PHP 的限制吗?其他各种表上的其他选择查询运行良好。问题仅与 CTE 语句有关。

4

1 回答 1

1

我知道这是一个老问题,但它没有得到回答,而且它是一个高排名的谷歌结果,所以我想我会参与进来。

查询 MS SQL 服务器的原生 PHP 方法都不能支持公用表表达式(“WITH”子句)。其中包括 mssql_* 库和 odbc_* 库。

这是由于 MS SQL 处理 CTE 的方式(通过创建宏执行)。好消息是 Microsoft 的库 (sqlsrv_*) 本身就支持 CTE。

sqlsrv_* 库在创建和使用连接、简单查询、准备好的语句等方面的操作与 mssql_* 相同。它们几乎是在 MS SQL 服务器上使用 mssql_* 或 odbc_* 的“直接”替代品,并且速度明显更快启动。

您可以从此链接获取 sqlsrv 库。在撰写本文时,SQL 2008 可以使用 2.x,但 SQL 2012 需要 3.x。

于 2014-01-13T09:57:38.230 回答