]> granicus.if.org Git - php/commitdiff
MFB: Added missing check for mismatching number of tokens & bound params in
authorIlia Alshanetsky <iliaa@php.net>
Sun, 3 Dec 2006 23:28:00 +0000 (23:28 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 3 Dec 2006 23:28:00 +0000 (23:28 +0000)
prepared statement emulation.

ext/pdo/pdo_sql_parser.c
ext/pdo/pdo_sql_parser.re

index 2133efb295305f7fccf96b42a1a441325746ed69..66e682e12719e02d43191a97ab2f8f3193b86126 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.10.6 on Thu Nov 23 09:42:00 2006 */
+/* Generated by re2c 0.10.6 on Sun Dec  3 18:28:10 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) {
index 2ef69f67485477924abe2a217e42d5ff1b3b685e..c6bc1dc5f3e4bc922ddf6d17cfeb9d75c38b0672 100644 (file)
@@ -132,7 +132,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;
@@ -156,7 +155,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) {