在Java的JDBC,我可以很容易地运行下面的SQL(注意周围的列和表名称双引号)在PHP错误PHP mssql_query双引号不能用于
Select
cus."customer_id" ,
cus."organisation_or_person" ,
cus."organisation_name" ,
cus."first_name" ,
cus."last_name" ,
cus."date_became_customer" ,
cus."other_customer_details"
From
"Contact_Management"."dbo"."Customers" cus
但相同的查询说出来无效的语法
“警告:mssql_query()[function.mssql查询]:消息:附近有语法错误CUSTOMER_ID“(严重性15)”
但如果去掉所有的双引号,查询作品罚款和没有错误。
该查询是从一个Java应用程序移植的,所以我想保留双引号和SQL,因为它是。任何替代方案?
谢谢 Nilesh制作
Volkerk - 解决方案(SET QUOTED_IDENTIFIER ON)
我做了以下
$sql = <<<EOD
Select
cus."customer_id" ,
cus."organisation_or_person" ,
cus."organisation_name" ,
cus."first_name" ,
cus."last_name" ,
cus."date_became_customer" ,
cus."other_customer_details"
From
"Contact_Management"."dbo"."Customers" cus
EOD;
$db->Execute('SET QUOTED_IDENTIFIER ON');
$rs = $db->Execute($sql);
而且它完美
太谢谢你了..
对于来自Java的同一实例,相同的查询工作正常,所以我不认为它是SQL Server的错误。我认为这是更多的PHP库问题。 – Nilesh 2010-04-06 22:34:43
这不是服务器范围内的设置。所以你的Java应用程序可能会使用其他设置 – VolkerK 2010-04-06 22:37:36
嗨Volkerk,你是对的,它解决了我的问题。我对未经测试而回复表示歉意。 我做了以下 \t $ SQL = <<< EOD 选择 CUS。 “CUSTOMER_ID”, CUS。 “organisation_or_person”, CUS。 “ORGANISATION_NAME”, CUS。 “FIRST_NAME”, CUS“。 last_name“, cus。”date_became_customer“, cus。”other_customer_details“ 从 ”Contact_Management“。”dbo“。”Customers“cus EOD; $ db-> Execute('SET QUOTED_IDENTIFIER ON'); $ rs = $ db-> Execute($ sql); 它工作完美 非常感谢你非常感谢 – Nilesh 2010-04-06 22:42:35