3

我在我的开发机器 WinXPsp3 上编写了代码,它有 apache 独立 2.2.21。查询工作正常。

然后,我将 php 复制到我的生产机器 WinXPsp3 上,该机器安装了 apache 2.2 windows 和 php 5.3.5 windows 安装,并且是 SQL Server 机器,但是查询崩溃了。

我在生产机器上卸载了 apache 和 php,并从开发机器上复制了我的单机版本,但是当我启动 apache 时,我收到一个错误,即缺少 MSCPV100.dll。我安装了 MS C++ Redist,这个问题就消失了。

查询如下:

    选择顶部 (50)
    [ID],
    (选择案例
    当 [Location] 为空时,则为“未知”
    当 [Location]='' THEN '未知'
    ELSE UPPER([位置]) END
     + ', ' as [text()] FROM dbo.[OtherTable]
    WHERE [OtherTable].[Key]=[Table].[ID] FOR XML path('')) AS 位置
    从表

(这里的任何错误格式都不能反映我的实际查询,因为它适用于其他 apache 安装)

查询在 [text()] 之前的小写“AS”上阻塞,并带有“关键字'as'附近的语法不正确”。

该查询最初是大写的,并且有更多的字段,所以我使用小写,直到我发现失败描述正在谈论哪个“AS”。

我尝试用“''”替换 text() 周围的“[]”,但这没有帮助。

我知道的事实是真实的:

  • apache 安装是相同的。

  • php安装是相同的。


  • 当通过在不同机器上安装相同的 apache托管时,查询工作正常。


  • apache/php 升级后,其他查询在生产机器上运行良好。

这些信息让我相信生产机器出了问题,而不是 apache、sql server、php 或查询。关于那可能是什么的任何想法?

有几件事我没有提到:

PHP 连接类型是 odbc。

两台机器上的 SQL Server ODBC 驱动程序都是 2000.85.1132.0,但生产机器上还有 SQL Server Native Client 10.0 版本 2007.100.2531.00。

4

1 回答 1

0

好的,我搞砸了——我在一台服务器上“endode”加号,而在另一台服务器上“encodeURIComponent”。复制/粘贴太多了-我的错。无论如何,感谢您的关注!

于 2012-10-19T17:27:28.827 回答