summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_nonapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqli/mysqli_nonapi.c')
-rw-r--r--ext/mysqli/mysqli_nonapi.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index cf6fe7960c..0429281675 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -222,8 +222,23 @@ PHP_FUNCTION(mysqli_multi_query)
MYSQLI_ENABLE_MQ;
if (mysql_real_query(mysql->mysql, query, query_len)) {
- MYSQLI_DISABLE_MQ;
+ char s_error[MYSQL_ERRMSG_SIZE], s_sqlstate[SQLSTATE_LENGTH+1];
+ unsigned int s_errno;
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
+
+ /* we have to save error information, cause
+ MYSQLI_DISABLE_MQ will reset error information */
+ strcpy(s_error, mysql_error(mysql->mysql));
+ strcpy(s_sqlstate, mysql_sqlstate(mysql->mysql));
+ s_errno = mysql_errno(mysql->mysql);
+
+ MYSQLI_DISABLE_MQ;
+
+ /* restore error information */
+ strcpy(mysql->mysql->net.last_error, s_error);
+ strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
+ mysql->mysql->net.last_errno = s_errno;
+
RETURN_FALSE;
}
RETURN_TRUE;