Skip to content
Prev Previous commit
Next Next commit
Mark pure mysqli_ result-metadata functions as hasSideEffects=false
Functions like mysqli_fetch_fields, mysqli_fetch_field_direct,
mysqli_num_rows, and mysqli_num_fields always return the same value
for the same mysqli_result — they read fixed metadata and don't
advance any cursor. These should not be marked as having side effects.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
  • Loading branch information
phpstan-bot and claude committed Apr 15, 2026
commit 2abbe2e56ee6ae17a8b305f0e348b5f637120611
8 changes: 4 additions & 4 deletions bin/functionMetadata_original.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
'mysqli_fetch_column' => ['hasSideEffects' => true],
'mysqli_fetch_field' => ['hasSideEffects' => true],
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
'mysqli_fetch_fields' => ['hasSideEffects' => true],
'mysqli_fetch_field_direct' => ['hasSideEffects' => false],
'mysqli_fetch_fields' => ['hasSideEffects' => false],
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
'mysqli_fetch_object' => ['hasSideEffects' => true],
'mysqli_fetch_row' => ['hasSideEffects' => true],
Expand Down Expand Up @@ -151,8 +151,8 @@
'mysqli_more_results' => ['hasSideEffects' => true],
'mysqli_multi_query' => ['hasSideEffects' => true],
'mysqli_next_result' => ['hasSideEffects' => true],
'mysqli_num_fields' => ['hasSideEffects' => true],
'mysqli_num_rows' => ['hasSideEffects' => true],
'mysqli_num_fields' => ['hasSideEffects' => false],
'mysqli_num_rows' => ['hasSideEffects' => false],
'mysqli_options' => ['hasSideEffects' => true],
'mysqli_param_count' => ['hasSideEffects' => true],
'mysqli_ping' => ['hasSideEffects' => true],
Expand Down
8 changes: 4 additions & 4 deletions resources/functionMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -1420,8 +1420,8 @@
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
'mysqli_fetch_column' => ['hasSideEffects' => true],
'mysqli_fetch_field' => ['hasSideEffects' => true],
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
'mysqli_fetch_fields' => ['hasSideEffects' => true],
'mysqli_fetch_field_direct' => ['hasSideEffects' => false],
'mysqli_fetch_fields' => ['hasSideEffects' => false],
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
'mysqli_fetch_object' => ['hasSideEffects' => true],
'mysqli_fetch_row' => ['hasSideEffects' => true],
Expand Down Expand Up @@ -1449,8 +1449,8 @@
'mysqli_more_results' => ['hasSideEffects' => true],
'mysqli_multi_query' => ['hasSideEffects' => true],
'mysqli_next_result' => ['hasSideEffects' => true],
'mysqli_num_fields' => ['hasSideEffects' => true],
'mysqli_num_rows' => ['hasSideEffects' => true],
'mysqli_num_fields' => ['hasSideEffects' => false],
'mysqli_num_rows' => ['hasSideEffects' => false],
'mysqli_options' => ['hasSideEffects' => true],
'mysqli_param_count' => ['hasSideEffects' => true],
'mysqli_ping' => ['hasSideEffects' => true],
Expand Down
Loading