mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Allow lazy fetch to work with numeric offsets.
Fix named parameters...
This commit is contained in:
parent
37d8a82b4d
commit
d8d7dd7e14
@ -540,14 +540,13 @@ static PHP_METHOD(PDOStatement, fetchAll)
|
|||||||
static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param)
|
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 = {0};
|
||||||
int name_strlen;
|
|
||||||
|
|
||||||
param.paramno = -1;
|
param.paramno = -1;
|
||||||
param.param_type = PDO_PARAM_STR;
|
param.param_type = PDO_PARAM_STR;
|
||||||
|
|
||||||
if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
|
if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
|
||||||
ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!",
|
ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!",
|
||||||
¶m.name, &name_strlen, ¶m.parameter, ¶m.param_type,
|
¶m.name, ¶m.namelen, ¶m.parameter, ¶m.param_type,
|
||||||
¶m.max_value_len,
|
¶m.max_value_len,
|
||||||
¶m.driver_params)) {
|
¶m.driver_params)) {
|
||||||
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|llz!", ¶m.paramno,
|
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|llz!", ¶m.paramno,
|
||||||
@ -826,15 +825,20 @@ static zval *row_prop_or_dim_read(zval *object, zval *member, int type TSRMLS_DC
|
|||||||
int colno = -1;
|
int colno = -1;
|
||||||
|
|
||||||
MAKE_STD_ZVAL(return_value);
|
MAKE_STD_ZVAL(return_value);
|
||||||
convert_to_string(member);
|
|
||||||
|
if (Z_TYPE_P(member) == IS_LONG) {
|
||||||
/* look up the column */
|
if (Z_LVAL_P(member) >= 0 && Z_LVAL_P(member) < stmt->column_count) {
|
||||||
/* TODO: replace this with a hash of available column names to column
|
fetch_value(stmt, return_value, Z_LVAL_P(member) TSRMLS_CC);
|
||||||
* numbers */
|
}
|
||||||
for (colno = 0; colno < stmt->column_count; colno++) {
|
} else {
|
||||||
if (strcmp(stmt->columns[colno].name, Z_STRVAL_P(member)) == 0) {
|
convert_to_string(member);
|
||||||
fetch_value(stmt, return_value, colno TSRMLS_CC);
|
/* TODO: replace this with a hash of available column names to column
|
||||||
break;
|
* numbers */
|
||||||
|
for (colno = 0; colno < stmt->column_count; colno++) {
|
||||||
|
if (strcmp(stmt->columns[colno].name, Z_STRVAL_P(member)) == 0) {
|
||||||
|
fetch_value(stmt, return_value, colno TSRMLS_CC);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,13 +855,17 @@ static int row_prop_or_dim_exists(zval *object, zval *member, int check_empty TS
|
|||||||
pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object TSRMLS_CC);
|
pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object TSRMLS_CC);
|
||||||
int colno = -1;
|
int colno = -1;
|
||||||
|
|
||||||
convert_to_string(member);
|
if (Z_TYPE_P(member) == IS_LONG) {
|
||||||
|
return Z_LVAL_P(member) >= 0 && Z_LVAL_P(member) < stmt->column_count;
|
||||||
|
} else {
|
||||||
|
convert_to_string(member);
|
||||||
|
|
||||||
/* TODO: replace this with a hash of available column names to column
|
/* TODO: replace this with a hash of available column names to column
|
||||||
* numbers */
|
* numbers */
|
||||||
for (colno = 0; colno < stmt->column_count; colno++) {
|
for (colno = 0; colno < stmt->column_count; colno++) {
|
||||||
if (strcmp(stmt->columns[colno].name, Z_STRVAL_P(member)) == 0) {
|
if (strcmp(stmt->columns[colno].name, Z_STRVAL_P(member)) == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user