]> granicus.if.org Git - php/commitdiff
MFH: Fixed type conversion for NULL values in mysql_stmt_execute
authorGeorg Richter <georg@php.net>
Mon, 20 Dec 2004 16:42:20 +0000 (16:42 +0000)
committerGeorg Richter <georg@php.net>
Mon, 20 Dec 2004 16:42:20 +0000 (16:42 +0000)
NEWS
ext/mysqli/mysqli_api.c

diff --git a/NEWS b/NEWS
index 13af1626074431cbe5910e11ea2e4cba80a6a935..52a874544fbd262052cd0dcbf52bc4d5d6ed2caa 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2005, PHP 5.0.4
+- Fixed a bug in mysql_stmt_execute (type conversion with NULL values). (Georg)
 - Fixed bug #31139 (XML Parser Functions seem to drop &amp; when parsing). (Rob)
 - Fixed bug #31111 (Compile failure of zend_strtod.c). (Derick)
 - Fixed bug #31110 (PHP 4.3.10 does not compile on Tru64 UNIX 5.1B). (Derick)
index 9c46c4d393b970b1cdcb90b35859af6ae6a23037..c10f521d50be99ab273e453432efa6d608936dad 100644 (file)
@@ -540,25 +540,25 @@ 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;
+                               }
+                       }
                }
        }
        if (mysql_stmt_execute(stmt->stmt)) {