--- embedaddon/php/ext/mysqli/mysqli_warning.c 2012/02/21 23:47:58 1.1.1.1 +++ embedaddon/php/ext/mysqli/mysqli_warning.c 2012/05/29 12:34:41 1.1.1.2 @@ -102,7 +102,7 @@ MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_D #else /* {{{ MYSQLI_WARNING *php_new_warning */ static -MYSQLI_WARNING *php_new_warning(const zval *reason, int errorno TSRMLS_DC) +MYSQLI_WARNING *php_new_warning(const zval * reason, int errorno TSRMLS_DC) { MYSQLI_WARNING *w; @@ -123,17 +123,17 @@ MYSQLI_WARNING *php_new_warning(const zval *reason, in /* {{{ MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC) */ -MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC) +MYSQLI_WARNING * php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC) { MYSQLI_WARNING *w, *first = NULL, *prev = NULL; MYSQL_RES *result; zval *row; - if (mysql_real_query(mysql, "SHOW WARNINGS", 13)) { + if (mysql->m->query(mysql, "SHOW WARNINGS", 13 TSRMLS_CC)) { return NULL; } - result = mysql_use_result(mysql); + result = mysql->m->use_result(mysql TSRMLS_CC); for (;;) { zval **entry; @@ -267,7 +267,9 @@ PHP_METHOD(mysqli_warning, __construct) { zval *z; mysqli_object *obj; +#ifndef MYSQLI_USE_MYSQLND MYSQL *hdl; +#endif MYSQLI_WARNING *w; MYSQLI_RESOURCE *mysqli_resource; @@ -282,23 +284,36 @@ PHP_METHOD(mysqli_warning, __construct) if (obj->zo.ce == mysqli_link_class_entry) { MY_MYSQL *mysql; MYSQLI_FETCH_RESOURCE_CONN(mysql, &z, MYSQLI_STATUS_VALID); - hdl = mysql->mysql; + if (mysql_warning_count(mysql->mysql)) { +#ifndef MYSQLI_USE_MYSQLND + w = php_get_warnings(mysql->mysql TSRMLS_CC); +#else + w = php_get_warnings(mysql->mysql->data TSRMLS_CC); +#endif + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found"); + RETURN_FALSE; + } } else if (obj->zo.ce == mysqli_stmt_class_entry) { MY_STMT *stmt; MYSQLI_FETCH_RESOURCE_STMT(stmt, &z, MYSQLI_STATUS_VALID); +#ifndef MYSQLI_USE_MYSQLND hdl = mysqli_stmt_get_connection(stmt->stmt); + if (mysql_warning_count(hdl)) { + w = php_get_warnings(hdl TSRMLS_CC); +#else + if (mysqlnd_stmt_warning_count(stmt->stmt)) { + w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); +#endif + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found"); + RETURN_FALSE; + } } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid class argument"); RETURN_FALSE; } - if (mysql_warning_count(hdl)) { - w = php_get_warnings(hdl TSRMLS_CC); - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No warnings found"); - RETURN_FALSE; - } - mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; @@ -330,11 +345,11 @@ const mysqli_property_entry mysqli_warning_property_en /* }}} */ /* {{{ mysqli_warning_property_info_entries */ -zend_property_info mysqli_warning_property_info_entries[] = { - {ZEND_ACC_PUBLIC, "message", sizeof("message") - 1, 0, NULL, 0, NULL}, - {ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, 0, NULL, 0, NULL}, - {ZEND_ACC_PUBLIC, "errno", sizeof("errno") - 1, 0, NULL, 0, NULL}, - {0, NULL, 0, 0, NULL, 0, NULL} +const zend_property_info mysqli_warning_property_info_entries[] = { + {ZEND_ACC_PUBLIC, "message", sizeof("message") - 1, -1, 0, NULL, 0, NULL}, + {ZEND_ACC_PUBLIC, "sqlstate", sizeof("sqlstate") - 1, -1, 0, NULL, 0, NULL}, + {ZEND_ACC_PUBLIC, "errno", sizeof("errno") - 1, -1, 0, NULL, 0, NULL}, + {0, NULL, 0, -1, 0, NULL, 0, NULL} }; /* }}} */