iliaa Wed May 16 19:58:58 2007 UTC
Modified files:
/php-src/ext/pdo pdo_dbh.c pdo_stmt.c php_pdo_driver.h
Log:
MFB: PDO:FETCH_KEY_PAIR
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.139&r2=1.140&diff_format=u
Index: php-src/ext/pdo/pdo_dbh.c
diff -u php-src/ext/pdo/pdo_dbh.c:1.139 php-src/ext/pdo/pdo_dbh.c:1.140
--- php-src/ext/pdo/pdo_dbh.c:1.139 Mon Jan 1 09:29:27 2007
+++ php-src/ext/pdo/pdo_dbh.c Wed May 16 19:58:58 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dbh.c,v 1.139 2007/01/01 09:29:27 sebastian Exp $ */
+/* $Id: pdo_dbh.c,v 1.140 2007/05/16 19:58:58 iliaa Exp $ */
/* The PDO Database Handle Class */
@@ -1328,6 +1328,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.173&r2=1.174&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.173 php-src/ext/pdo/pdo_stmt.c:1.174
--- php-src/ext/pdo/pdo_stmt.c:1.173 Wed Mar 7 09:02:18 2007
+++ php-src/ext/pdo/pdo_stmt.c Wed May 16 19:58:58 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_stmt.c,v 1.173 2007/03/07 09:02:18 tony2001 Exp $ */
+/* $Id: pdo_stmt.c,v 1.174 2007/05/16 19:58:58 iliaa Exp $ */
/* The PDO Statement Handle Class */
@@ -896,6 +896,21 @@
}
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;
+ }
+
+ if (!return_all) {
+ ALLOC_HASHTABLE(return_value->value.ht);
+ zend_hash_init(return_value->value.ht,
1, NULL, ZVAL_PTR_DTOR, 0);
+ Z_TYPE_P(return_value) = IS_ARRAY;
+ } else {
+ 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);
@@ -1019,6 +1034,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.86&r2=1.87&diff_format=u
Index: php-src/ext/pdo/php_pdo_driver.h
diff -u php-src/ext/pdo/php_pdo_driver.h:1.86
php-src/ext/pdo/php_pdo_driver.h:1.87
--- php-src/ext/pdo/php_pdo_driver.h:1.86 Wed Jan 3 20:33:09 2007
+++ php-src/ext/pdo/php_pdo_driver.h Wed May 16 19:58:58 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_driver.h,v 1.86 2007/01/03 20:33:09 nlopess Exp $ */
+/* $Id: php_pdo_driver.h,v 1.87 2007/05/16 19:58:58 iliaa Exp $ */
#ifndef PHP_PDO_DRIVER_H
#define PHP_PDO_DRIVER_H
@@ -91,6 +91,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 */
};
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php