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

Reply via email to