diff options
author | Andrey Hristov <andrey@php.net> | 2011-10-31 11:46:24 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2011-10-31 11:46:24 +0000 |
commit | 6a9feb730f0024da06c455ed58fbc633b0a167ea (patch) | |
tree | 9d9a0252038f40164d813ba9f7fccb0ab5c135f3 /ext/mysqli/mysqli_warning.c | |
parent | 55656b2cda2b8849dd279020c012759b9f847274 (diff) | |
download | php-git-6a9feb730f0024da06c455ed58fbc633b0a167ea.tar.gz |
Split struct MYSQLND in struct MYSQLND and struct MYSQLD_CONN_DATA.
A step in the direction of keeping internal data private
Diffstat (limited to 'ext/mysqli/mysqli_warning.c')
-rw-r--r-- | ext/mysqli/mysqli_warning.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c index e6d2f516ec..1f752c3f60 100644 --- a/ext/mysqli/mysqli_warning.c +++ b/ext/mysqli/mysqli_warning.c @@ -102,7 +102,7 @@ MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC) #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, int errorno TSRMLS_DC) /* {{{ 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; |