2012-10-19 21 views
3

我在我的开发机器WinXPsp3上编写了代码,它具有apache独立版本2.2.21。查询工作正常。2个相同安装的apache/php从同一个SQL Server数据库返回不同的结果

然后,我复制了我的生产机器WinXPsp3上的PHP,其中有Apache 2.2窗口安装与PHP 5.3.5 Windows安装,并且是SQL Server计算机,但查询崩溃。

我卸载了生产机器上的apache和php,并从开发机器上复制了我的独立版本,但是当我启动apache时,出现MSCPV100.dll丢失的错误。 我安装了MS C++ Redist,并且该问题消失了。

查询如下:

 
    SELECT TOP (50) 
    [ID], 
    (SELECT Case 
    WHEN [Location] is null then 'Unknown' 
    WHEN [Location]='' THEN 'Unknown' 
    ELSE UPPER([Location]) END 
    + ', ' as [text()] FROM dbo.[OtherTable] 
    WHERE [OtherTable].[Key]=[Table].[ID] FOR XML path('')) AS Locations 
    FROM Table

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

查询被窒息在较低在[text()]之前将“AS关键字附近的语法不正确”的情况设置为'“。

该查询最初是大写字母,并且有更多字段,所以我使用小写字母,直到找到失败说明中提到的“AS”。

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

事实我知道是正确的:

  • 的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。

回答

0

好吧,我拉了一个snafu - 我是一个服务器上的加号“endode”,而我是另一个“encodeURIComponent”。这么多复制/粘贴 - 我的不好。无论如何感谢您的看法!

相关问题