]> granicus.if.org Git - php/commitdiff
Added double param type
authorArd Biesheuvel <abies@php.net>
Sat, 12 Jun 2004 02:35:34 +0000 (02:35 +0000)
committerArd Biesheuvel <abies@php.net>
Sat, 12 Jun 2004 02:35:34 +0000 (02:35 +0000)
Added param struct initialiser
Reversed param parsing order (long <=> string)

ext/pdo/pdo_stmt.c
ext/pdo/php_pdo_driver.h

index 9992633319dfdd2d4be3929fcd8cfe36284d9c03..e34ffe0a3abd36eccbed75537a986ffb47f322e7 100755 (executable)
@@ -377,6 +377,16 @@ static inline void fetch_value(pdo_stmt_t *stmt, zval *dest, int colno TSRMLS_DC
                                ZVAL_STRINGL(dest, value, value_len, 1);
                                break;
                        }
+               case PDO_PARAM_INT:
+                       if (value) {
+                               ZVAL_LONG(dest, *(long*)value);
+                               break;
+                       }
+               case PDO_PARAM_DBL:
+                       if (value) {
+                               ZVAL_DOUBLE(dest, *(double*)value);
+                               break;
+                       }
                default:
                        ZVAL_NULL(dest);
        }
@@ -548,18 +558,16 @@ static PHP_METHOD(PDOStatement, fetchAll)
 
 static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param)
 {
-       struct pdo_bound_param_data param = {0};
+       struct pdo_bound_param_data param = PDO_BOUND_PARAM_INIT;
 
-       param.paramno = -1;
        param.param_type = PDO_PARAM_STR;
 
-       if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                               ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!",
-                               &param.name, &param.namelen, &param.parameter, &param.param_type,
-                               &param.max_value_len,
+       if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
+                       "lz|llz!", &param.paramno, &param.parameter, &param.param_type, &param.max_value_len,
+                       &param.driver_params)) {
+               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", &param.name,
+                               &param.namelen, &param.parameter, &param.param_type, &param.max_value_len, 
                                &param.driver_params)) {
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|llz!", &param.paramno,
-                                       &param.parameter, &param.param_type, &param.max_value_len, &param.driver_params)) {
                        return 0;
                }       
        }
index a0f9ac16ab7d82b51e5bcd330598b13d0dc28be0..63b2026466497100f053c531aa320f2ccd8ef880 100755 (executable)
@@ -43,6 +43,7 @@ enum pdo_param_type {
        PDO_PARAM_STR,
        PDO_PARAM_LOB,
        PDO_PARAM_STMT, /* hierarchical result set */
+       PDO_PARAM_DBL,
 };
 
 enum pdo_fetch_type {
@@ -331,6 +332,8 @@ struct pdo_bound_param_data {
        int is_param;           /* parameter or column ? */
 };
 
+#define PDO_BOUND_PARAM_INIT { -1, NULL, 0 }
+
 /* represents a prepared statement */
 struct _pdo_stmt_t {
        /* driver specifics */