]> granicus.if.org Git - php/commitdiff
MFH:
authorGeorg Richter <georg@php.net>
Mon, 1 Nov 2004 07:57:46 +0000 (07:57 +0000)
committerGeorg Richter <georg@php.net>
Mon, 1 Nov 2004 07:57:46 +0000 (07:57 +0000)
Fixed tests for empty dates (see http://bugs.mysql.com/?id=6058)
Fixed memleak in mysqli_stmt_bind_result
Fixed error handling for mysqli_multi_query

ext/mysqli/mysqli_api.c
ext/mysqli/mysqli_nonapi.c
ext/mysqli/tests/003.phpt
ext/mysqli/tests/020.phpt

index 3d333bcbfa3248556d855be727d6c8bf167569ab..9c46c4d393b970b1cdcb90b35859af6ae6a23037 100644 (file)
@@ -217,6 +217,16 @@ PHP_FUNCTION(mysqli_stmt_bind_result)
        zval            *mysql_stmt;
        MYSQL_BIND      *bind;
 
+       if (getThis()) {
+               start = 0;
+       }
+
+       if (zend_parse_method_parameters((getThis()) ? 0:1 TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
+               return; 
+       }
+
+       MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt"); 
+
        if (argc < (getThis() ? 1 : 2))  {
                WRONG_PARAM_COUNT;
        }
@@ -228,15 +238,6 @@ PHP_FUNCTION(mysqli_stmt_bind_result)
                WRONG_PARAM_COUNT;
        }
 
-       if (getThis()) {
-               start = 0;
-       }
-
-       if (zend_parse_method_parameters((getThis()) ? 0:1 TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
-               return; 
-       }
-
-       MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt"); 
        
        var_cnt = argc - start;
 
@@ -601,7 +602,7 @@ PHP_FUNCTION(mysqli_stmt_fetch)
        if (!(ret = mysql_stmt_fetch(stmt->stmt))) {
                for (i = 0; i < stmt->result.var_cnt; i++) {
                        if (stmt->result.vars[i]->type == IS_STRING && stmt->result.vars[i]->value.str.len) {
-                       efree(stmt->result.vars[i]->value.str.val);
+               efree(stmt->result.vars[i]->value.str.val);
                        }
                        if (!stmt->result.is_null[i]) {
                                switch (stmt->result.buf[i].type) {
index 13a9ee23c5b02d5e629ccf82961e409167ee4a85..260c0c75d6153432173285b1e4e9d7553c471733 100644 (file)
@@ -50,8 +50,8 @@ PHP_FUNCTION(mysqli_connect)
        }
 
        if (!socket_len) {
-        socket = NULL;
-    }
+               socket = NULL;
+       }
 
        /* TODO: safe mode handling */
        if (PG(sql_safe_mode)){
@@ -222,8 +222,23 @@ PHP_FUNCTION(mysqli_multi_query)
 
        MYSQLI_ENABLE_MQ;       
        if (mysql_real_query(mysql->mysql, query, query_len)) {
-               MYSQLI_DISABLE_MQ;
+               char s_error[MYSQL_ERRMSG_SIZE], s_sqlstate[SQLSTATE_LENGTH+1];
+               unsigned int s_errno;
                MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
+
+               /* we have to save error information, cause 
+               MYSQLI_DISABLE_MQ will reset error information */
+               strcpy(s_error, mysql_error(mysql->mysql));
+               strcpy(s_sqlstate, mysql_sqlstate(mysql->mysql));
+               s_errno = mysql_errno(mysql->mysql);
+
+               MYSQLI_DISABLE_MQ;
+
+               /* restore error information */
+               strcpy(mysql->mysql->net.last_error, s_error);
+               strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
+               mysql->mysql->net.last_errno = s_errno; 
+
                RETURN_FALSE;
        }       
        RETURN_TRUE;
index 5535e9fb40c394747743ccd144e548aec2114e8b..906bf28dec3f4a636cf9fad2644c0c42ac305d62 100644 (file)
@@ -50,7 +50,7 @@ array(7) {
   [4]=>
   string(19) "2010-07-10 00:00:00"
   [5]=>
-  string(0) ""
+  string(19) "0000-00-00 00:00:00"
   [6]=>
   string(19) "1999-12-29 00:00:00"
 }
index 5aa244329fa2fb84571800b60e05b08f930e3d9e..d08930fed9ff38addd1f33e29e88264a811dd8d3 100644 (file)
@@ -58,7 +58,7 @@ array(7) {
   [4]=>
   string(19) "2010-07-10 00:00:00"
   [5]=>
-  string(0) ""
+  string(19) "0000-00-00 00:00:00"
   [6]=>
   string(19) "1999-12-29 00:00:00"
 }