georg Fri Jan 28 12:37:42 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src NEWS
/php-src/ext/mysqli mysqli_api.c mysqli_prop.c
Log:
MFH: Fix for mysql_affected_rows and mysql_stmt_affected_rows
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.223&r2=1.1760.2.224&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.223 php-src/NEWS:1.1760.2.224
--- php-src/NEWS:1.1760.2.223 Thu Jan 27 21:00:54 2005
+++ php-src/NEWS Fri Jan 28 12:37:41 2005
@@ -6,6 +6,8 @@
- Changed foreach() to throw an exception if IteratorAggregate::getIterator()
does not return an Iterator. (Marcus)
- Changed phpize not to require libtool. (Jani)
+- Fixed a bug in mysql_affected_rows and mysql_stmt_affected_rows when the
+ api function returns -1 (Georg)
- Fixed several egregious leaks in ext/browscap and sapi/embed. (Andrei)
- Fixed build system to always use bundled libtool files. (Jani)
- Fixed a bug in mysqli_stmt_execute() (type conversion with NULL values).
(Georg)
http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_api.c?r1=1.87.2.10&r2=1.87.2.11&ty=u
Index: php-src/ext/mysqli/mysqli_api.c
diff -u php-src/ext/mysqli/mysqli_api.c:1.87.2.10
php-src/ext/mysqli/mysqli_api.c:1.87.2.11
--- php-src/ext/mysqli/mysqli_api.c:1.87.2.10 Thu Jan 27 05:20:21 2005
+++ php-src/ext/mysqli/mysqli_api.c Fri Jan 28 12:37:42 2005
@@ -15,7 +15,7 @@
| Author: Georg Richter <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
- $Id: mysqli_api.c,v 1.87.2.10 2005/01/27 10:20:21 georg Exp $
+ $Id: mysqli_api.c,v 1.87.2.11 2005/01/28 17:37:42 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -44,6 +44,9 @@
MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
rc = mysql_affected_rows(mysql->mysql);
+ if (rc == (my_ulonglong) -1) {
+ RETURN_LONG(-1);
+ }
MYSQLI_RETURN_LONG_LONG(rc);
}
/* }}} */
@@ -1480,6 +1483,9 @@
MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
rc = mysql_stmt_affected_rows(stmt->stmt);
+ if (rc == (my_ulonglong) -1) {
+ RETURN_LONG(-1);
+ }
MYSQLI_RETURN_LONG_LONG(rc)
}
/* }}} */
http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_prop.c?r1=1.14.2.4&r2=1.14.2.5&ty=u
Index: php-src/ext/mysqli/mysqli_prop.c
diff -u php-src/ext/mysqli/mysqli_prop.c:1.14.2.4
php-src/ext/mysqli/mysqli_prop.c:1.14.2.5
--- php-src/ext/mysqli/mysqli_prop.c:1.14.2.4 Wed Dec 29 06:47:03 2004
+++ php-src/ext/mysqli/mysqli_prop.c Fri Jan 28 12:37:42 2005
@@ -15,7 +15,7 @@
| Author: Georg Richter <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
- $Id: mysqli_prop.c,v 1.14.2.4 2004/12/29 11:47:03 georg Exp $
+ $Id: mysqli_prop.c,v 1.14.2.5 2005/01/28 17:37:42 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -130,9 +130,36 @@
}
/* }}} */
+/* {{{ property link_affected_rows_read */
+int link_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
+{
+ MY_MYSQL *mysql;
+ my_ulonglong rc;
+
+ ALLOC_ZVAL(*retval);
+ CHECK_OBJECT();
+
+ mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
+ rc = mysql_affected_rows(mysql->mysql);
+
+ if (rc == (my_ulonglong)-1) {
+ ZVAL_LONG(*retval, -1);
+ return SUCCESS;
+ }
+
+ if (rc < LONG_MAX) {
+ ZVAL_LONG(*retval, rc);
+ } else {
+ char ret[40];
+ sprintf(ret, "%llu", (my_ulonglong) rc);
+ ZVAL_STRING(*retval, ret, 1);
+ }
+
+ return SUCCESS;
+}
+/* }}} */
/* link properties */
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_affected_rows_read, mysql_affected_rows,
MYSQLI_GET_MYSQL(), my_ulonglong);
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_errno_read, mysql_errno,
MYSQLI_GET_MYSQL(), ulong);
MYSQLI_MAP_PROPERTY_FUNC_STRING(link_error_read, mysql_error,
MYSQLI_GET_MYSQL());
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_field_count_read, mysql_field_count,
MYSQLI_GET_MYSQL(), ulong);
@@ -220,7 +247,35 @@
}
/* }}} */
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_affected_rows_read,
mysql_stmt_affected_rows, MYSQLI_GET_STMT(), my_ulonglong);
+/* {{{ property stmt_affected_rows_read */
+int stmt_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
+{
+ MY_STMT *stmt;
+ my_ulonglong rc;
+
+ ALLOC_ZVAL(*retval);
+ CHECK_OBJECT();
+
+ stmt = (MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
+ rc = mysql_stmt_affected_rows(stmt->stmt);
+
+ if (rc == (my_ulonglong)-1) {
+ ZVAL_LONG(*retval, -1);
+ return SUCCESS;
+ }
+
+ if (rc < LONG_MAX) {
+ ZVAL_LONG(*retval, rc);
+ } else {
+ char ret[40];
+ sprintf(ret, "%llu", (my_ulonglong) rc);
+ ZVAL_STRING(*retval, ret, 1);
+ }
+
+ return SUCCESS;
+}
+/* }}} */
+
MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_insert_id_read, mysql_stmt_insert_id,
MYSQLI_GET_STMT(), my_ulonglong);
MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_num_rows_read, mysql_stmt_num_rows,
MYSQLI_GET_STMT(), my_ulonglong);
MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_param_count_read, mysql_stmt_param_count,
MYSQLI_GET_STMT(), ulong);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php