PHP+;UnixODBC+;FreeTDS-选择[field],因为[name]不起作用

PHP+;UnixODBC+;FreeTDS-选择[field],因为[name]不起作用,php,sql,sql-server,freetds,unixodbc,Php,Sql,Sql Server,Freetds,Unixodbc,我有一台安装了PHP5.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 没有 unixodbc:是的 我使用的是unixODBC-2.3.1 MSSQL 2000

我有一台安装了PHP5.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
  • 没有
  • unixodbc:是的
我使用的是unixODBC-2.3.1

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

但是,MSSQL 2005服务器不能与MSSQL_num_行或MSSQL_fetch_assoc一起工作-您必须使用odbc_fetch_行

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

然而,MSSQL 2005服务器有一个很大的问题:我不能选择一个字段作为另一个名称

例如:

SELECT
   [EnquiryID] AS "The_Key"
   FROM [db].[dbo].[table]
在我的管理应用程序(即:非PHP)中运行良好,但如果在我的PHP环境中运行相同的应用程序,我会得到:

stdClass Object
(
    [PK_EnquiryID] => 1
)
您可以看到它应该是
[按键]=>1

请问,有人知道我们怎样才能避开这件事吗?我要把头发扯下来了

干杯


Neil

我认为这在freeTDS列表中得到了回答,但PHP中的问题是,它错误地调用了ODBC,因此得到的是基表名,而不是您在本例中需要的标签。

我认为这在freeTDS列表中得到了回答,但PHP中的问题是,它对ODBC进行了错误的调用,因此得到的是基表名,而不是本例中所需的标签。

这决不是一个完美的解决方案,我很想学习处理此问题的正确方法,但同时,在基础列名之后添加到每一列,但是在AS别名之前,您应该能够绕过此问题。

这决不是一个完美的解决方案,我很想了解处理此问题的正确方法,但同时,在基础列名之后,但在AS别名之前,您应该能够绕过此问题

+''