diff --git a/NEWS b/NEWS index e73dbc58671..e8bab176df4 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,10 @@ PHP NEWS - Core: . Fixed bug #79650 (php-win.exe 100% cpu lockup). (cmb) +- PDO SQLite: + . Fixed bug #79664 (PDOStatement::getColumnMeta fails on empty result set). + (cmb) + ?? ??? ????, PHP 7.3.19 - Core: diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c index c51ab539566..5aae9a073b7 100644 --- a/ext/pdo_sqlite/sqlite_statement.c +++ b/ext/pdo_sqlite/sqlite_statement.c @@ -337,7 +337,7 @@ static int pdo_sqlite_stmt_col_meta(pdo_stmt_t *stmt, zend_long colno, zval *ret if (!S->stmt) { return FAILURE; } - if(colno >= sqlite3_data_count(S->stmt)) { + if(colno >= sqlite3_column_count(S->stmt)) { /* error invalid column */ pdo_sqlite_error_stmt(stmt); return FAILURE; diff --git a/ext/pdo_sqlite/tests/bug79664.phpt b/ext/pdo_sqlite/tests/bug79664.phpt new file mode 100644 index 00000000000..072d107ba6a --- /dev/null +++ b/ext/pdo_sqlite/tests/bug79664.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #79664 (PDOStatement::getColumnMeta fails on empty result set) +--SKIPIF-- + +--FILE-- + PDO::ERRMODE_EXCEPTION, +]); +$stmt = $pdo->query('select 1 where 0'); +if ($stmt->columnCount()) { + var_dump($stmt->getColumnMeta(0)); +} +?> +--EXPECT-- +array(6) { + ["native_type"]=> + string(4) "null" + ["flags"]=> + array(0) { + } + ["name"]=> + string(1) "1" + ["len"]=> + int(4294967295) + ["precision"]=> + int(0) + ["pdo_type"]=> + int(2) +}