Edit report at http://bugs.php.net/bug.php?id=47588&edit=1

 ID:               47588
 Updated by:       ssuffic...@php.net
 Reported by:      ssufficool at roadrunner dot com
 Summary:          PDO_DBLIB: barfs on quoted field names
-Status:           Assigned
+Status:           Closed
 Type:             Feature/Change Request
 Package:          PDO related
 Operating System: Linux Gentoo 2.6.x
 PHP Version:      5.3-svn
 Assigned To:      ssufficool

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Fixed in trunk


Previous Comments:
------------------------------------------------------------------------
[2010-06-23 03:29:03] ssuffic...@php.net

Automatic comment from SVN on behalf of ssufficool
Revision: http://svn.php.net/viewvc/?view=revision&revision=300685
Log: Fix Bug #47588 - Allow Quoted Identifiers

------------------------------------------------------------------------
[2010-04-24 01:03:18] fel...@php.net

But this patch has a side effect, when using for example... 'where foo =
"bar"', the "bar" will be identified as an identifier, not a literal.
Right?

------------------------------------------------------------------------
[2010-03-20 00:50:02] ssufficool at roadrunner dot com

Set quoted identifiers to allow "FIELD NAME" quoting style.



Index: ext/pdo_dblib/dblib_driver.c

===================================================================

--- ext/pdo_dblib/dblib_driver.c        (revision 296453)

+++ ext/pdo_dblib/dblib_driver.c        (working copy)

@@ -236,6 +236,9 @@

        /* limit text/image from network */

        DBSETOPT(H->link, DBTEXTSIZE, "2147483647");



+       /* Allow double quoted field and table names */

+       DBSETOPT(H->link, DBQUOTEDIDENT, NULL);

+

        if (vars[3].optval && FAIL == dbuse(H->link, vars[3].optval)) {

                goto cleanup;

        }

------------------------------------------------------------------------
[2009-05-15 19:43:17] ssufficool at roadrunner dot com

Solution:



tsql from freetds package set the following where PDO does not:

set quoted_identifier on

set ansi_warnings on

set ansi_padding on

set ansi_nulls on

set concat_null_yields_null on



Since this is default behavior of FreeTDS (tsql) and NT DBLIB (isql), I
assume it should be for PDO dblib as well.

------------------------------------------------------------------------
[2009-03-06 16:13:33] ssufficool at roadrunner dot com

Description:
------------
When passing a query containing double quoted field names, the query
fails. 

Reproduce code:
---------------
$pdo_ms = new PDO('dblib:host=db01;dbname=database',

$_SESSION['user'], $_SESSION['pass'], array(PDO::ATTR_ERRMODE =>
PDO::ERRMODE_EXCEPTION ) );



$rs = $pdo_ms->prepare('SELECT "myView"."FieldName" from "myView" order
by "Some Field"')



Expected result:
----------------
A valid handle to a stmt in $rs



Actual result:
--------------
SQLSTATE[HY000]: General error: 20018 Incorrect syntax near 'FieldName'.
[20018] (severity 5) [(null)]




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=47588&edit=1

Reply via email to