iliaa Fri Jan 11 01:47:55 2008 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/pdo pdo_stmt.c /php-src NEWS Log: MFB: Fixed a bug with PDO::FETCH_COLUMN|PDO::FETCH_GROUP mode when a column # by which to group by data is specified. http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.38.2.29&r2=1.118.2.38.2.30&diff_format=u Index: php-src/ext/pdo/pdo_stmt.c diff -u php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.29 php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.30 --- php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.29 Mon Dec 31 07:20:09 2007 +++ php-src/ext/pdo/pdo_stmt.c Fri Jan 11 01:47:55 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.118.2.38.2.29 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_stmt.c,v 1.118.2.38.2.30 2008/01/11 01:47:55 iliaa Exp $ */ /* The PDO Statement Handle Class */ @@ -894,6 +894,7 @@ int flags = how & PDO_FETCH_FLAGS, idx, old_arg_count = 0; zend_class_entry *ce = NULL, *old_ce = NULL; zval grp_val, *grp, **pgrp, *retval, *old_ctor_args = NULL; + int colno; if (how == PDO_FETCH_USE_DEFAULT) { how = stmt->default_fetch_type; @@ -909,6 +910,12 @@ return 1; } + if (flags & PDO_FETCH_GROUP && stmt->fetch.column == -1) { + colno = 1; + } else { + colno = stmt->fetch.column; + } + if (return_value) { int i = 0; @@ -945,8 +952,12 @@ break; case PDO_FETCH_COLUMN: - if (stmt->fetch.column >= 0 && stmt->fetch.column < stmt->column_count) { - fetch_value(stmt, return_value, stmt->fetch.column, NULL TSRMLS_CC); + if (colno >= 0 && colno < stmt->column_count) { + if (flags == PDO_FETCH_GROUP && stmt->fetch.column == -1) { + fetch_value(stmt, return_value, 1, NULL TSRMLS_CC); + } else { + fetch_value(stmt, return_value, colno, NULL TSRMLS_CC); + } if (!return_all) { return 1; } else { @@ -1049,7 +1060,11 @@ if (return_all && how != PDO_FETCH_KEY_PAIR) { INIT_PZVAL(&grp_val); - fetch_value(stmt, &grp_val, i, NULL TSRMLS_CC); + if (flags == PDO_FETCH_GROUP && how == PDO_FETCH_COLUMN && stmt->fetch.column > 0) { + fetch_value(stmt, &grp_val, colno, NULL TSRMLS_CC); + } else { + fetch_value(stmt, &grp_val, i, NULL TSRMLS_CC); + } convert_to_string(&grp_val); if (how == PDO_FETCH_COLUMN) { i = stmt->column_count; /* no more data to fetch */ @@ -1527,7 +1542,7 @@ switch(ZEND_NUM_ARGS()) { case 0: case 1: - stmt->fetch.column = how & PDO_FETCH_GROUP ? 1 : 0; + stmt->fetch.column = how & PDO_FETCH_GROUP ? -1 : 0; break; case 2: convert_to_long(arg2); http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1050&r2=1.2027.2.547.2.1051&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.1050 php-src/NEWS:1.2027.2.547.2.1051 --- php-src/NEWS:1.2027.2.547.2.1050 Wed Jan 9 07:57:23 2008 +++ php-src/NEWS Fri Jan 11 01:47:55 2008 @@ -4,6 +4,8 @@ - Fixed weired behavior in CGI parameter parsing. (Dmitry, Hannes Magnusson) - Fixed a safe_mode bypass in cURL identified by Maksymilian Arciemowicz. (Ilia) +- Fixed a bug with PDO::FETCH_COLUMN|PDO::FETCH_GROUP mode when a column # by + which to group by data is specified. (Ilia) - Fixed bug #43793 (zlib filter is unable to auto-detect gzip/zlib file headers). (Greg)
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php