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)