PHP'nin mssql_query çift tırnak kullanılamaz

3 Cevap php

Java-JDBC, ben kolayca (sütun ve tablo adları çift tırnak NOT) aşağıdaki SQL çalıştırabilirsiniz

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

Ama PHP hataları aynı sorgu dışarı Geçersiz sözdizimi söyleyerek

"Uyarı: mssql_query () [function.mssql-sorgu]: mesajı: Yanlış sözdizimi yakınındaki 'customer_id' (ciddiyeti 15)."

Ama bütün sorgu çalışıyor çift tırnak, ve hiç hata kaldırırsanız.

Sorgu yüzden çift tırnak ve olduğu gibi SQL tutmak istiyorum bir java uygulaması taşıdık. Herhangi bir alternatif çözümler?

Thank you Nilesh

Volkerk -- Solution (SET QUOTED_IDENTIFIER ON)

Ben şu ki

    $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); 

Ve mükemmel çalıştı

Çok teşekkür ederim ..

3 Cevap

QUOTED_IDENTIFIER muhtemelen OFF ayarlanır.

http://msdn.microsoft.com/en-us/library/ms174393.aspx diyor ki:

SET QUOTED_IDENTIFIER (Transact-SQL)
[...]
When SET QUOTED_IDENTIFIER is ON, identifiers can be delimited by double quotation marks, and literals must be delimited by single quotation marks. When SET QUOTED_IDENTIFIER is OFF, identifiers cannot be quoted and must follow all Transact-SQL rules for identifiers. For more information, see Identifiers
[...]
The SQL Server Native Client ODBC driver and SQL Server Native Client OLE DB Provider for SQL Server automatically set QUOTED_IDENTIFIER to ON when connecting. This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties. The default for SET QUOTED_IDENTIFIER is OFF for connections from DB-Library applications.

On olarak ayarlayın ve gitmek için iyi bir konum.

Olduğu gibi-tam olarak değil, ama " ters tırnakların ile çift tırnak yerini alabilir:

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

Ne bu konuda?

$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';

$query = str_replace('"', '', $query);