我有一个安装了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 别名之前向每列添加
+''
,您应该能够绕过这个问题。