mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
PDO MySQL: Use stmt_next_result with libmysqlclient as well
libmysqlclient added this function in version 5.5, which happens to be the minimum we support. If we have a prepared statement, we should use it on both mysqlnd and libmysqlclient, even if the handling afterwards is different. This fixes error handling with native prepared statements.
This commit is contained in:
parent
4e51059d52
commit
d6b4b82a38
1 changed files with 12 additions and 13 deletions
|
@ -341,30 +341,29 @@ static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt) /* {{{ */
|
|||
PDO_DBG_INF_FMT("stmt=%p", S->stmt);
|
||||
|
||||
/* ensure that we free any previous unfetched results */
|
||||
if (S->stmt) {
|
||||
mysql_stmt_free_result(S->stmt);
|
||||
}
|
||||
pdo_mysql_free_result(S);
|
||||
|
||||
#ifdef PDO_USE_MYSQLND
|
||||
if (S->stmt) {
|
||||
if (mysqlnd_stmt_next_result(S->stmt)) {
|
||||
mysql_stmt_free_result(S->stmt);
|
||||
if (mysql_stmt_next_result(S->stmt)) {
|
||||
pdo_mysql_error_stmt(stmt);
|
||||
S->done = 1;
|
||||
PDO_DBG_RETURN(0);
|
||||
}
|
||||
} else {
|
||||
if (mysql_next_result(H->server)) {
|
||||
pdo_mysql_error_stmt(stmt);
|
||||
S->done = 1;
|
||||
PDO_DBG_RETURN(0);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef PDO_USE_MYSQLND
|
||||
if (S->stmt) {
|
||||
PDO_DBG_RETURN(pdo_mysql_stmt_after_execute_prepared(stmt));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (mysql_next_result(H->server)) {
|
||||
pdo_mysql_error_stmt(stmt);
|
||||
S->done = 1;
|
||||
PDO_DBG_RETURN(0);
|
||||
} else {
|
||||
PDO_DBG_RETURN(pdo_mysql_fill_stmt_from_result(stmt));
|
||||
}
|
||||
PDO_DBG_RETURN(pdo_mysql_fill_stmt_from_result(stmt));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue