summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/pdo/pdo_stmt.c24
-rwxr-xr-xext/pdo/php_pdo_driver.h3
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!",
- &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;
}
}
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 */