Skip to content

Commit c1533ea

Browse files
author
dome
committed
Add last_query_error property to mysqli for query error tracking
1 parent 233e33f commit c1533ea

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

ext/mysqli/mysqli.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,9 @@ PHP_MINIT_FUNCTION(mysqli)
535535

536536
mysqlnd_reverse_api_register_api(&mysqli_reverse_api);
537537

538+
/* Declare 'last_query_error' property to store last failed query */
539+
zend_declare_property_null(mysqli_link_class_entry, "last_query_error", sizeof("last_query_error")-1, ZEND_ACC_PUBLIC);
540+
538541
return SUCCESS;
539542
}
540543
/* }}} */

ext/mysqli/mysqli_nonapi.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,8 @@ PHP_FUNCTION(mysqli_query)
603603
if (resultmode & MYSQLI_ASYNC) {
604604
if (mysqli_async_query(mysql->mysql, query, query_len)) {
605605
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
606+
/* Save failed query string to 'last_query_error' */
607+
zend_update_property_string(Z_OBJCE_P(ZEND_THIS), Z_OBJ_P(ZEND_THIS), "last_query_error", sizeof("last_query_error")-1, query);
606608
RETURN_FALSE;
607609
}
608610
mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC;
@@ -611,6 +613,8 @@ PHP_FUNCTION(mysqli_query)
611613

612614
if (mysql_real_query(mysql->mysql, query, query_len)) {
613615
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
616+
/* Save failed query string to 'last_query_error' */
617+
zend_update_property_string(Z_OBJCE_P(ZEND_THIS), Z_OBJ_P(ZEND_THIS), "last_query_error", sizeof("last_query_error")-1, query);
614618
RETURN_FALSE;
615619
}
616620

0 commit comments

Comments
 (0)