mirror of
https://github.com/php/php-src.git
synced 2024-12-01 13:54:10 +08:00
add theoretical support for returning ints as ints and bools as bools.
individual drivers need to support returning data in these formats.
This commit is contained in:
parent
f9d3469e4f
commit
076bc75c01
@ -377,6 +377,22 @@ static inline void fetch_value(pdo_stmt_t *stmt, zval *dest, int colno TSRMLS_DC
|
||||
stmt->methods->get_col(stmt, colno, &value, &value_len TSRMLS_CC);
|
||||
|
||||
switch (col->param_type) {
|
||||
case PDO_PARAM_INT:
|
||||
if (value && value_len == sizeof(long)) {
|
||||
ZVAL_LONG(dest, *(long*)value);
|
||||
break;
|
||||
}
|
||||
ZVAL_NULL(dest);
|
||||
break;
|
||||
|
||||
case PDO_PARAM_BOOL:
|
||||
if (value && value_len == sizeof(zend_bool)) {
|
||||
ZVAL_BOOL(dest, *(zend_bool*)value);
|
||||
break;
|
||||
}
|
||||
ZVAL_NULL(dest);
|
||||
break;
|
||||
|
||||
case PDO_PARAM_STR:
|
||||
if (value && !(value_len == 0 && stmt->dbh->oracle_nulls)) {
|
||||
ZVAL_STRINGL(dest, value, value_len, 1);
|
||||
|
@ -39,10 +39,11 @@ struct pdo_bound_param_data;
|
||||
|
||||
enum pdo_param_type {
|
||||
PDO_PARAM_NULL,
|
||||
PDO_PARAM_INT,
|
||||
PDO_PARAM_INT, /* int as in long, the php native int type */
|
||||
PDO_PARAM_STR,
|
||||
PDO_PARAM_LOB,
|
||||
PDO_PARAM_STMT, /* hierarchical result set */
|
||||
PDO_PARAM_BOOL
|
||||
};
|
||||
|
||||
enum pdo_fetch_type {
|
||||
@ -260,7 +261,10 @@ typedef int (*pdo_stmt_fetch_func)(pdo_stmt_t *stmt TSRMLS_DC);
|
||||
* Driver should populate stmt->columns[colno] with appropriate info */
|
||||
typedef int (*pdo_stmt_describe_col_func)(pdo_stmt_t *stmt, int colno TSRMLS_DC);
|
||||
|
||||
/* retrieves pointer and size of the value for a column */
|
||||
/* retrieves pointer and size of the value for a column.
|
||||
* Note that PDO expects the driver to manage the lifetime of this data;
|
||||
* it will copy the value into a zval on behalf of the script.
|
||||
*/
|
||||
typedef int (*pdo_stmt_get_col_data_func)(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len TSRMLS_DC);
|
||||
|
||||
/* hook for bound params */
|
||||
@ -336,7 +340,7 @@ struct _pdo_dbh_t {
|
||||
/* these items mst appear in this order at the beginning of the
|
||||
struct so that this can be cast as a zend_object. we need this
|
||||
to allow the extending class to escape all the custom handlers
|
||||
that PDO decalres.
|
||||
that PDO declares.
|
||||
*/
|
||||
zend_class_entry *ce;
|
||||
HashTable *properties;
|
||||
|
Loading…
Reference in New Issue
Block a user