/*
+----------------------------------------------------------------------+
- | 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 |
{
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++) {
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++) {
/*
+----------------------------------------------------------------------+
- | 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 |
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;
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;
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:
}
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 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 |
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) \
{ \