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