diff options
Diffstat (limited to 'ext/pdo/pdo_stmt.c')
| -rwxr-xr-x | ext/pdo/pdo_stmt.c | 24 |
1 files changed, 16 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; } } |
