1

我有一个安装了 PHP 5.2.13 的 unix 服务器,它可以访问两个 SQL 服务器(一个运行 MSSQL SERVER 2000,另一个运行 MSSQL 2005)。

它使用 FreeTDS - 详细信息:

  • 版本:freetds v0.82
  • freetds.conf 目录:/usr/local/etc
  • MS db-lib 源兼容性:否
  • Sybase 二进制兼容性:否
  • 线程安全:是
  • iconv 库:是的
  • TDS 版本:8.0
  • iODBC:没有
  • unixodbc:是的

我正在使用 unixODBC-2.3.1

MSSQL 2000 服务器很好,我可以像使用 MySQL 一样运行所有 SQL 语句并使用 mssql_num_rows 和 mssql_fetch_assoc。

但是,MSSQL 2005 服务器不能使用 mssql_num_rows 或 mssql_fetch_assoc - 您必须使用 odbc_fetch_row。

这不是一个真正的问题,我认为这只是由于不同的服务器安装。

但是,我对 MSSQL 2005 服务器有一个大问题:我不能选择一个字段作为另一个名称!

例如:

SELECT
   [EnquiryID] AS "The_Key"
   FROM [db].[dbo].[table]

在我的管理应用程序中工作正常(即:不是 PHP),但如果我在我的 PHP 环境中运行相同,我得到:

stdClass Object
(
    [PK_EnquiryID] => 1
)

你可以看到它应该是[The_Key] => 1

有人知道我们如何解决这个问题吗?我要扯头发了!

干杯

尼尔

4

2 回答 2

1

我认为这已在 freeTDS 列表中得到解答,但问题在于 PHP,它对 ODBC 进行了错误调用,因此获取了基表名称,而不是在这种情况下您需要的标签。

于 2012-05-30T09:23:36.607 回答
0

这绝不是一个完美的解决方案,我很想学习处理这个问题的正确方法,但与此同时,添加

+''
到每一列,在基础列名之后,但在 AS 别名之前,您应该能够规避这个问题。

于 2012-10-18T18:04:08.933 回答