PHP + UnixODBC + FreeTDS - SELECT [field] AS [name] 不起作用


PHP + UnixODBC + FreeTDS - SELECT [field] AS [name] does not work

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

它使用 FreeTDS - 详细信息:

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

我正在使用 unixODBC-2.3.1

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

但是,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

请问有谁知道我们如何解决这个问题? 我要把头发扯出来了!

干杯

尼尔

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

这绝不是一个完美的解决方案,我很想学习处理此问题的正确方法,但同时,在基础列名称之后但在 AS 别名之前向每列添加

+''
,您应该能够绕过这个问题。