Skip to content

Commit

Permalink
Fixed bug with stmt_close (libmysql bk version 1.1477 required)
Browse files Browse the repository at this point in the history
Fixed bug with mysql_execute and float values
  • Loading branch information
Georg Richter committed Feb 22, 2003
1 parent a7df999 commit b63fbf2
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
19 changes: 9 additions & 10 deletions ext/mysqli/mysqli.c
Original file line number Diff line number Diff line change
@@ -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 |
Expand Down Expand Up @@ -43,11 +43,9 @@ void php_clear_stmt_bind(STMT *stmt)
{
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++) {
Expand Down Expand Up @@ -361,10 +359,11 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags

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++) {
Expand Down
24 changes: 11 additions & 13 deletions ext/mysqli/mysqli_api.c
Original file line number Diff line number Diff line change
@@ -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 |
Expand Down Expand Up @@ -385,14 +385,6 @@ PHP_FUNCTION(mysqli_close)

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;
Expand Down Expand Up @@ -594,7 +586,7 @@ PHP_FUNCTION(mysqli_execute)
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;
Expand Down Expand Up @@ -663,8 +655,13 @@ PHP_FUNCTION(mysqli_fetch)
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:
Expand Down Expand Up @@ -1530,6 +1527,7 @@ PHP_FUNCTION(mysqli_stmt_close)
}
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;
Expand Down
12 changes: 9 additions & 3 deletions ext/mysqli/php_mysqli.h
Original file line number Diff line number Diff line change
@@ -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 |
Expand Down Expand Up @@ -113,7 +113,13 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
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) \
{ \
Expand Down

0 comments on commit b63fbf2

Please sign in to comment.