iliaa Wed May 16 19:33:57 2007 UTC Added files: (Branch: PHP_5_2) /php-src/ext/pdo/tests pdo_034.phpt
Modified files: /php-src/ext/pdo pdo_dbh.c pdo_stmt.c php_pdo_driver.h Log: [DOC] Added PDO::FETCH_KEY_PAIR mode that will fetch a 2 column result set into an associated array. http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.31.2.10&r2=1.82.2.31.2.11&diff_format=u Index: php-src/ext/pdo/pdo_dbh.c diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.10 php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.11 --- php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.10 Sun Apr 29 14:47:34 2007 +++ php-src/ext/pdo/pdo_dbh.c Wed May 16 19:33:57 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c,v 1.82.2.31.2.10 2007/04/29 14:47:34 iliaa Exp $ */ +/* $Id: pdo_dbh.c,v 1.82.2.31.2.11 2007/05/16 19:33:57 iliaa Exp $ */ /* The PDO Database Handle Class */ @@ -1313,6 +1313,7 @@ REGISTER_PDO_CLASS_CONST_LONG("FETCH_FUNC", (long)PDO_FETCH_FUNC); REGISTER_PDO_CLASS_CONST_LONG("FETCH_GROUP",(long)PDO_FETCH_GROUP); REGISTER_PDO_CLASS_CONST_LONG("FETCH_UNIQUE",(long)PDO_FETCH_UNIQUE); + REGISTER_PDO_CLASS_CONST_LONG("FETCH_KEY_PAIR",(long)PDO_FETCH_KEY_PAIR); REGISTER_PDO_CLASS_CONST_LONG("FETCH_CLASSTYPE",(long)PDO_FETCH_CLASSTYPE); #if PHP_MAJOR_VERSION > 5 || PHP_MINOR_VERSION >= 1 REGISTER_PDO_CLASS_CONST_LONG("FETCH_SERIALIZE",(long)PDO_FETCH_SERIALIZE); http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.38.2.16&r2=1.118.2.38.2.17&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.16 php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.17 --- php-src/ext/pdo/pdo_stmt.c:1.118.2.38.2.16 Tue Apr 17 17:00:16 2007 +++ php-src/ext/pdo/pdo_stmt.c Wed May 16 19:33:57 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.118.2.38.2.16 2007/04/17 17:00:16 tony2001 Exp $ */ +/* $Id: pdo_stmt.c,v 1.118.2.38.2.17 2007/05/16 19:33:57 iliaa Exp $ */ /* The PDO Statement Handle Class */ @@ -900,6 +900,15 @@ } break; + case PDO_FETCH_KEY_PAIR: + if (stmt->column_count != 2) { + pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "PDO::FETCH_KEY_PAIR fetch mode requires the result set to contain extactly 2 columns." TSRMLS_CC); + return 0; + } + + array_init(return_value); + 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); @@ -1023,6 +1032,25 @@ case PDO_FETCH_ASSOC: add_assoc_zval(return_value, stmt->columns[i].name, val); break; + + case PDO_FETCH_KEY_PAIR: + { + zval *tmp; + MAKE_STD_ZVAL(tmp); + fetch_value(stmt, tmp, ++i, NULL TSRMLS_CC); + + if (Z_TYPE_P(val) == IS_STRING) { + zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(val), Z_STRLEN_P(val) + 1, &tmp, sizeof(zval *), NULL); + } else if (Z_TYPE_P(val) = IS_LONG) { + zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_P(val), tmp, sizeof(tmp), NULL); + } else { + convert_to_string(val); + zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(val), Z_STRLEN_P(val) + 1, &tmp, sizeof(zval *), NULL); + } + zval_dtor(val); + FREE_ZVAL(val); + } + break; case PDO_FETCH_USE_DEFAULT: case PDO_FETCH_BOTH: http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/php_pdo_driver.h?r1=1.66.2.11.2.4&r2=1.66.2.11.2.5&diff_format=u Index: php-src/ext/pdo/php_pdo_driver.h diff -u php-src/ext/pdo/php_pdo_driver.h:1.66.2.11.2.4 php-src/ext/pdo/php_pdo_driver.h:1.66.2.11.2.5 --- php-src/ext/pdo/php_pdo_driver.h:1.66.2.11.2.4 Mon Jan 1 09:36:04 2007 +++ php-src/ext/pdo/php_pdo_driver.h Wed May 16 19:33:57 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_driver.h,v 1.66.2.11.2.4 2007/01/01 09:36:04 sebastian Exp $ */ +/* $Id: php_pdo_driver.h,v 1.66.2.11.2.5 2007/05/16 19:33:57 iliaa Exp $ */ #ifndef PHP_PDO_DRIVER_H #define PHP_PDO_DRIVER_H @@ -90,6 +90,7 @@ PDO_FETCH_INTO, /* fetch row into an existing object */ PDO_FETCH_FUNC, /* fetch into function and return its result */ PDO_FETCH_NAMED, /* like PDO_FETCH_ASSOC, but can handle duplicate names */ + PDO_FETCH_KEY_PAIR, /* fetch into an array where the 1st column is a key and all subsequent columns are values */ PDO_FETCH__MAX /* must be last */ }; http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_034.phpt?view=markup&rev=1.1 Index: php-src/ext/pdo/tests/pdo_034.phpt +++ php-src/ext/pdo/tests/pdo_034.phpt -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php