summaryrefslogtreecommitdiff
path: root/ext/pdo/pdo_sql_parser.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-12-03 23:27:44 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-12-03 23:27:44 +0000
commit44baca5aedacc17f5a81279ac2c1ef9ba4443376 (patch)
tree03fd1da06ce5e1e84cb2e494120ec4033dc0c05c /ext/pdo/pdo_sql_parser.c
parentb6bdd449620ed4f92a0bb90c7e1a91a50a74248e (diff)
downloadphp-git-44baca5aedacc17f5a81279ac2c1ef9ba4443376.tar.gz
Added missing check for mismatching number of tokens & bound params in
prepared statement emulation.
Diffstat (limited to 'ext/pdo/pdo_sql_parser.c')
-rw-r--r--ext/pdo/pdo_sql_parser.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c
index 020f98540d..eae5bda28e 100644
--- a/ext/pdo/pdo_sql_parser.c
+++ b/ext/pdo/pdo_sql_parser.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.10.6 on Thu Nov 23 09:39:04 2006 */
+/* Generated by re2c 0.10.6 on Sun Dec 3 18:24:46 2006 */
#line 1 "ext/pdo/pdo_sql_parser.re"
/*
+----------------------------------------------------------------------+
@@ -352,7 +352,6 @@ PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, int inquery_len,
goto clean_up;
}
-
if (stmt->supports_placeholders == query_type && !stmt->named_rewrite_template) {
/* query matches native syntax */
ret = 0;
@@ -376,7 +375,13 @@ PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, int inquery_len,
ret = -1;
goto clean_up;
}
-
+
+ if (params && bindno != zend_hash_num_elements(params) && stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "number of bound variables does not match number of tokens" TSRMLS_CC);
+ ret = -1;
+ goto clean_up;
+ }
+
/* what are we going to do ? */
if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {