diff options
author | Wez Furlong <wez@php.net> | 2005-07-08 17:01:20 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2005-07-08 17:01:20 +0000 |
commit | 512af63a639610780946f66ab00f492ab911ed93 (patch) | |
tree | 9180aa702a45729d1d15de406f767587020c3245 /ext/pdo_pgsql/pgsql_statement.c | |
parent | dec54a98fab7e667f2f5ec680b7d342164fa286e (diff) | |
download | php-git-512af63a639610780946f66ab00f492ab911ed93.tar.gz |
rewrite original names to our preferred format
Diffstat (limited to 'ext/pdo_pgsql/pgsql_statement.c')
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index c133cbdf12..0c38cb64c4 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -164,7 +164,19 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * case PDO_PARAM_EVT_ALLOC: /* decode name from $1, $2 into 0, 1 etc. */ if (param->name) { - param->paramno = atoi(param->name + 1); + if (param->name[0] == '$') { + param->paramno = atoi(param->name + 1); + } else { + /* resolve parameter name to rewritten name */ + char *nameptr; + if (SUCCESS == zend_hash_find(stmt->bound_param_map, + param->name, param->namelen + 1, (void**)&nameptr)) { + param->paramno = atoi(nameptr + 1) - 1; + } else { + pdo_pgsql_error_stmt(stmt, PGRES_FATAL_ERROR, "HY093"); + return 0; + } + } } break; @@ -191,7 +203,6 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * S->param_lengths[param->paramno] = Z_STRLEN_P(param->parameter); S->param_formats[param->paramno] = 1; } - break; } } |