georg           Sat Feb 22 02:31:02 2003 EDT

  Modified files:              
    /php4/ext/mysqli    php_mysqli.h mysqli.c mysqli_api.c 
  Log:
  Fixed bug with stmt_close (libmysql bk version 1.1477 required)
  Fixed bug with mysql_execute and float values
  
  
Index: php4/ext/mysqli/php_mysqli.h
diff -u php4/ext/mysqli/php_mysqli.h:1.9 php4/ext/mysqli/php_mysqli.h:1.10
--- php4/ext/mysqli/php_mysqli.h:1.9    Tue Feb 18 03:49:00 2003
+++ php4/ext/mysqli/php_mysqli.h        Sat Feb 22 02:31:01 2003
@@ -1,8 +1,8 @@
 /*
   +----------------------------------------------------------------------+
-  | PHP Version 4                                                        |
+  | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
-  | Copyright (c) 1997-2002 The PHP Group                                |
+  | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: php_mysqli.h,v 1.9 2003/02/18 08:49:00 georg Exp $ 
+  $Id: php_mysqli.h,v 1.10 2003/02/22 07:31:01 georg Exp $ 
 */
 
 /* A little hack to prevent build break, when mysql is used together with
@@ -113,7 +113,13 @@
                php_error(E_WARNING, "Couldn't fetch %s", intern->zo.ce->name);\
                RETURN_NULL();\
        }\
-}
+       if (!strcmp((char *)__name, "mysqli_stmt")) {\
+               if (!((STMT *)__ptr)->stmt->mysql) {\
+                       php_error(E_WARNING, "Statement isn't valid anymore");\
+                       RETURN_NULL();\
+               }\
+       }\
+} 
 
 #define MYSQLI_CLEAR_RESOURCE(__id) \
 { \
Index: php4/ext/mysqli/mysqli.c
diff -u php4/ext/mysqli/mysqli.c:1.6 php4/ext/mysqli/mysqli.c:1.7
--- php4/ext/mysqli/mysqli.c:1.6        Mon Feb 17 19:32:47 2003
+++ php4/ext/mysqli/mysqli.c    Sat Feb 22 02:31:01 2003
@@ -1,8 +1,8 @@
 /*
   +----------------------------------------------------------------------+
-  | PHP Version 4                                                        |
+  | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
-  | Copyright (c) 1997-2002 The PHP Group                                |
+  | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: mysqli.c,v 1.6 2003/02/18 00:32:47 georg Exp $ 
+  $Id: mysqli.c,v 1.7 2003/02/22 07:31:01 georg Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -43,11 +43,9 @@
 {
        unsigned int i;
 
-       /* 
-        * we don't need to call mysql_stmt_close here.
-        * in case mysqli_stmt_close wasn't called, all
-        * statements will be freed via mysql_close
-        */
+       if (stmt->stmt) {
+               mysql_stmt_close(stmt->stmt);
+       }
 
        if (stmt->var_cnt) {
                for (i = 0; i < stmt->var_cnt; i++) {
@@ -361,10 +359,11 @@
 
        MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result"); 
 
-       array_init(return_value);
-
        fields = mysql_fetch_fields(result);
-       row = mysql_fetch_row(result);
+       if (!(row = mysql_fetch_row(result))) {
+               RETURN_FALSE;
+       }
+       array_init(return_value);
        field_len = mysql_fetch_lengths(result);
 
        for (i = 0; i < mysql_num_fields(result); i++) {
Index: php4/ext/mysqli/mysqli_api.c
diff -u php4/ext/mysqli/mysqli_api.c:1.15 php4/ext/mysqli/mysqli_api.c:1.16
--- php4/ext/mysqli/mysqli_api.c:1.15   Tue Feb 18 03:49:00 2003
+++ php4/ext/mysqli/mysqli_api.c        Sat Feb 22 02:31:01 2003
@@ -1,8 +1,8 @@
 /*
   +----------------------------------------------------------------------+
-  | PHP Version 4                                                        |
+  | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
-  | Copyright (c) 1997-2002 The PHP Group                                |
+  | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: mysqli_api.c,v 1.15 2003/02/18 08:49:00 georg Exp $ 
+  $Id: mysqli_api.c,v 1.16 2003/02/22 07:31:01 georg Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -385,14 +385,6 @@
 
        MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link"); 
 
-       /*
-        * Don't free initial struct if there exist 
-        * non closed statements
-        */
-       if (mysql->stmts) {
-               mysql->free_me = 0;
-       }
-
        mysql_close(mysql);
        MYSQLI_CLEAR_RESOURCE(&mysql_link);     
        RETURN_TRUE;
@@ -594,7 +586,7 @@
                                                stmt->stmt->params[i].buffer = 
Z_STRVAL_PP(&stmt->vars[i]);
                                                stmt->stmt->params[i].buffer_length = 
strlen(Z_STRVAL_PP(&stmt->vars[i]));
                                                break;
-                                       case MYSQL_TYPE_FLOAT:
+                                       case MYSQL_TYPE_DOUBLE:
                                                convert_to_double_ex(&stmt->vars[i]);
                                                stmt->stmt->params[i].buffer = 
(gptr)&Z_LVAL_PP(&stmt->vars[i]);
                                                break;
@@ -663,8 +655,13 @@
                                                                
ZVAL_LONG(stmt->vars[i], lval);
                                                        }
                                                } else {
-                                                       stmt->bind[i].type = IS_STRING;
-                                                       ZVAL_STRING(stmt->vars[i], 
stmt->bind[i].buffer, 1);
+                                                       if (stmt->vars[i]->type == 
IS_STRING) {
+                                                               
efree(stmt->vars[i]->value.str.val);
+                                                       } 
+                                                       ZVAL_STRING(stmt->vars[i], 
stmt->bind[i].buffer, 1); 
+                                                       /*      
+                                                       stmt->vars[i]->value.str.len = 
strlen(stmt->bind[i].buffer);
+                                                       stmt->vars[i]->value.str.val = 
stmt->bind[i].buffer; */
                                                }
                                                break;
                                        default:
@@ -1530,6 +1527,7 @@
        }
        MYSQLI_FETCH_RESOURCE(stmt, STMT *, &mysql_stmt, "mysqli_stmt"); 
        mysql_stmt_close(stmt->stmt);
+       stmt->stmt = NULL;
        php_clear_stmt_bind(stmt); 
        MYSQLI_CLEAR_RESOURCE(&mysql_stmt);
        RETURN_TRUE;



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to