summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_statement.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2005-07-08 17:01:20 +0000
committerWez Furlong <wez@php.net>2005-07-08 17:01:20 +0000
commit512af63a639610780946f66ab00f492ab911ed93 (patch)
tree9180aa702a45729d1d15de406f767587020c3245 /ext/pdo_pgsql/pgsql_statement.c
parentdec54a98fab7e667f2f5ec680b7d342164fa286e (diff)
downloadphp-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.c15
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;
}
}