From: Ilia Alshanetsky Date: Fri, 8 Dec 2006 19:51:29 +0000 (+0000) Subject: MFB: Fixed bug #39759 (Can't use stored procedures fetching multiple result X-Git-Tag: RELEASE_1_0_0RC1~754 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ccc4783e4a43a131366a3897001f1438fbed9199;p=php MFB: Fixed bug #39759 (Can't use stored procedures fetching multiple result sets in pdo_mysql). --- diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index bba8d0e914..27dfb64c06 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -1827,10 +1827,6 @@ static PHP_METHOD(PDOStatement, setFetchMode) static int pdo_stmt_do_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) { - if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) { - return 0; - } - /* un-describe */ if (stmt->columns) { int i; @@ -1844,6 +1840,10 @@ static int pdo_stmt_do_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) stmt->column_count = 0; } + if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) { + return 0; + } + pdo_stmt_describe_columns(stmt TSRMLS_CC); return 1; @@ -1864,8 +1864,6 @@ static PHP_METHOD(PDOStatement, nextRowset) PDO_HANDLE_STMT_ERR(); RETURN_FALSE; } - - pdo_stmt_describe_columns(stmt TSRMLS_CC); RETURN_TRUE; } diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c index 6af4bd76d3..580f23f284 100755 --- a/ext/pdo_mysql/mysql_statement.c +++ b/ext/pdo_mysql/mysql_statement.c @@ -239,15 +239,15 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* No more results */ return 0; } else { - if ((my_ulonglong)-1 == (row_count = mysql_affected_rows(H->server))) { - pdo_mysql_error_stmt(stmt); - return 0; - } - if (!H->buffered) { S->result = mysql_use_result(H->server); + row_count = 0; } else { S->result = mysql_store_result(H->server); + if ((my_ulonglong)-1 == (row_count = mysql_affected_rows(H->server))) { + pdo_mysql_error_stmt(stmt); + return 0; + } } if (NULL == S->result) {