Commit acd0898bdfb for php.net
commit acd0898bdfb12fb34f422b3fffe54d747f89c235
Author: Niels Dossche <7771979+ndossche@users.noreply.github.com>
Date: Sat Dec 13 14:26:27 2025 +0100
Fix GH-20699: SQLite3Result fetchArray return array|false, null returned
Closes GH-20701.
diff --git a/NEWS b/NEWS
index 13f673a53c0..4e301bdbc8b 100644
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,10 @@ PHP NEWS
. Fixed bug GH-20678 (resource created by GlobIterator crashes with fclose()).
(David Carlier)
+- Sqlite3:
+ . Fixed bug GH-20699 (SQLite3Result fetchArray return array|false,
+ null returned). (ndossche, plusminmax)
+
- Standard:
. Fix error check for proc_open() command. (ndossche)
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index 9b3286b7022..b16be6932a0 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -2011,6 +2011,7 @@ PHP_METHOD(SQLite3Result, fetchArray)
default:
php_sqlite3_error(result_obj->db_obj, sqlite3_errcode(sqlite3_db_handle(result_obj->stmt_obj->stmt)), "Unable to execute statement: %s", sqlite3_errmsg(sqlite3_db_handle(result_obj->stmt_obj->stmt)));
+ RETURN_FALSE;
}
}
/* }}} */
diff --git a/ext/sqlite3/tests/gh20699.phpt b/ext/sqlite3/tests/gh20699.phpt
new file mode 100644
index 00000000000..1b53bfc98e3
--- /dev/null
+++ b/ext/sqlite3/tests/gh20699.phpt
@@ -0,0 +1,14 @@
+--TEST--
+GH-20699 (SQLite3Result fetchArray return array|false, null returned)
+--EXTENSIONS--
+sqlite3
+--CREDITS--
+plusminmax
+--FILE--
+<?php
+$db = new SQLite3(':memory:');
+var_dump($db->prepare('BEGIN;')->execute()->fetchArray());
+?>
+--EXPECTF--
+Warning: SQLite3Result::fetchArray(): Unable to execute statement: cannot start a transaction within a transaction in %s on line %d
+bool(false)