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