]> granicus.if.org Git - php/commitdiff
- Added PDO_ATTR_DEFAULT_FETCH_MODE which controls the default fetch mode
authorMarcus Boerger <helly@php.net>
Mon, 20 Mar 2006 20:54:34 +0000 (20:54 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 20 Mar 2006 20:54:34 +0000 (20:54 +0000)
ext/pdo/pdo_dbh.c
ext/pdo/php_pdo_driver.h

index d753d515407dbe8bc73fb6520874b035aa872b23..a25a164f884a79484b5d8b25c5b36cec38f9cff3 100755 (executable)
@@ -723,6 +723,15 @@ static int pdo_dbh_attribute_set(pdo_dbh_t *dbh, long attr, zval *value TSRMLS_D
                        dbh->oracle_nulls = Z_LVAL_P(value);
                        return SUCCESS;
 
+               case PDO_ATTR_DEFAULT_FETCH_MODE:
+                       convert_to_long(value);
+                       if (Z_LVAL_P(value) == PDO_FETCH_USE_DEFAULT) {
+                               pdo_raise_impl_error(dbh, NULL, "HY000", "invalid fetch mode type" TSRMLS_CC);
+                               return FAILURE;
+                       }
+                       dbh->default_fetch_type = Z_LVAL_P(value);
+                       return SUCCESS;
+
                case PDO_ATTR_STRINGIFY_FETCHES:
                        convert_to_long(value);
                        dbh->stringify = Z_LVAL_P(value) ? 1 : 0;
@@ -869,6 +878,9 @@ static PHP_METHOD(PDO, getAttribute)
                                add_next_index_zval(return_value, dbh->def_stmt_ctor_args);
                        }
                        return;
+               case PDO_ATTR_DEFAULT_FETCH_MODE:
+                       RETURN_LONG(dbh->default_fetch_type);
+
        }
        
        if (!dbh->methods->get_attribute) {
@@ -1308,6 +1320,7 @@ void pdo_dbh_init(TSRMLS_D)
        REGISTER_PDO_CLASS_CONST_LONG("ATTR_DRIVER_NAME",               (long)PDO_ATTR_DRIVER_NAME);
        REGISTER_PDO_CLASS_CONST_LONG("ATTR_STRINGIFY_FETCHES",(long)PDO_ATTR_STRINGIFY_FETCHES);
        REGISTER_PDO_CLASS_CONST_LONG("ATTR_MAX_COLUMN_LEN",(long)PDO_ATTR_MAX_COLUMN_LEN);
+       REGISTER_PDO_CLASS_CONST_LONG("ATTR_DEFAULT_FETCH_MODE",(long)PDO_ATTR_DEFAULT_FETCH_MODE);
        
        REGISTER_PDO_CLASS_CONST_LONG("ERRMODE_SILENT", (long)PDO_ERRMODE_SILENT);
        REGISTER_PDO_CLASS_CONST_LONG("ERRMODE_WARNING",        (long)PDO_ERRMODE_WARNING);
index 514721069d5051795e609541492a729249f659e7..2e5d56d3398e77f18c0aabee60042b4d872427f7 100755 (executable)
@@ -130,6 +130,7 @@ enum pdo_attribute_type {
        PDO_ATTR_DRIVER_NAME,             /* name of the driver (as used in the constructor) */
        PDO_ATTR_STRINGIFY_FETCHES,     /* converts integer/float types to strings during fetch */
        PDO_ATTR_MAX_COLUMN_LEN,        /* make database calculate maximum length of data found in a column */
+       PDO_ATTR_DEFAULT_FETCH_MODE, /* Set the default fetch mode */
 
        /* this defines the start of the range for driver specific options.
         * Drivers should define their own attribute constants beginning with this