]> granicus.if.org Git - php/commitdiff
prevent type conversion during mysql_stmt_execute for NULL variables
authorGeorg Richter <georg@php.net>
Mon, 20 Dec 2004 16:39:14 +0000 (16:39 +0000)
committerGeorg Richter <georg@php.net>
Mon, 20 Dec 2004 16:39:14 +0000 (16:39 +0000)
ext/mysqli/mysqli_api.c

index 4e3dda9d3ff02c485c6bb9a12c433a806e0deba1..b756184b54614e26fba0d09831c5d9984ab44e4b 100644 (file)
@@ -539,24 +539,24 @@ PHP_FUNCTION(mysqli_stmt_execute)
        
        for (i = 0; i < stmt->param.var_cnt; i++) {             
                if (stmt->param.vars[i]) {
-                       stmt->param.is_null[i] = (stmt->param.vars[i]->type == IS_NULL);
-
-                       switch (stmt->stmt->params[i].buffer_type) {
-                               case MYSQL_TYPE_VAR_STRING:
-                                       convert_to_string_ex(&stmt->param.vars[i]);
-                                       stmt->stmt->params[i].buffer = Z_STRVAL_PP(&stmt->param.vars[i]);
-                                       stmt->stmt->params[i].buffer_length = strlen(Z_STRVAL_PP(&stmt->param.vars[i]));
-                                       break;
-                               case MYSQL_TYPE_DOUBLE:
-                                       convert_to_double_ex(&stmt->param.vars[i]);
-                                       stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
-                                       break;
-                               case MYSQL_TYPE_LONG:
-                                       convert_to_long_ex(&stmt->param.vars[i]);
-                                       stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
-                                       break;
-                               default:
-                                       break;
+                       if ( !(stmt->param.is_null[i] = (stmt->param.vars[i]->type == IS_NULL)) ) {
+                               switch (stmt->stmt->params[i].buffer_type) {
+                                       case MYSQL_TYPE_VAR_STRING:
+                                               convert_to_string_ex(&stmt->param.vars[i]);
+                                               stmt->stmt->params[i].buffer = Z_STRVAL_PP(&stmt->param.vars[i]);
+                                               stmt->stmt->params[i].buffer_length = strlen(Z_STRVAL_PP(&stmt->param.vars[i]));
+                                               break;
+                                       case MYSQL_TYPE_DOUBLE:
+                                               convert_to_double_ex(&stmt->param.vars[i]);
+                                               stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
+                                               break;
+                                       case MYSQL_TYPE_LONG:
+                                               convert_to_long_ex(&stmt->param.vars[i]);
+                                               stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
+                                               break;
+                                       default:
+                                               break;
+                               }
                        }       
                }
        }