diff options
-rwxr-xr-x | ext/pdo/pdo_stmt.c | 24 | ||||
-rwxr-xr-x | ext/pdo/php_pdo_driver.h | 3 |
2 files changed, 19 insertions, 8 deletions
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 9992633319..e34ffe0a3a 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -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!", - ¶m.name, ¶m.namelen, ¶m.parameter, ¶m.param_type, - ¶m.max_value_len, + if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, + "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + ¶m.driver_params)) { + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", ¶m.name, + ¶m.namelen, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, ¶m.driver_params)) { - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|llz!", ¶m.paramno, - ¶m.parameter, ¶m.param_type, ¶m.max_value_len, ¶m.driver_params)) { return 0; } } diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h index a0f9ac16ab..63b2026466 100755 --- a/ext/pdo/php_pdo_driver.h +++ b/ext/pdo/php_pdo_driver.h @@ -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 */ |