Skip to content

Commit 00cce37

Browse files
phpstan-botclaude
andcommitted
Mark all remaining mysqli_ functions as having side effects
All mysqli_* functions interact with database/connection state and are not pure. Functions like mysqli_affected_rows depend on the last query, mysqli_errno/mysqli_error depend on the last operation's error state, mysqli_real_escape_string depends on the connection charset, etc. This adds the 59 previously missing mysqli_ functions including: - State readers: mysqli_affected_rows, mysqli_errno, mysqli_error, mysqli_error_list, mysqli_insert_id, mysqli_info, mysqli_sqlstate, mysqli_warning_count, mysqli_num_rows, mysqli_num_fields, etc. - Aliases: mysqli_bind_param, mysqli_bind_result, mysqli_execute, mysqli_fetch, mysqli_escape_string, mysqli_client_encoding, etc. - Connection info: mysqli_get_host_info, mysqli_get_server_info, mysqli_get_server_version, mysqli_get_charset, etc. - Statement state: mysqli_stmt_affected_rows, mysqli_stmt_errno, mysqli_stmt_error, mysqli_stmt_num_rows, etc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 861bdde commit 00cce37

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed

bin/functionMetadata_original.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,35 +94,73 @@
9494
'link' => ['hasSideEffects' => true],
9595
'mkdir' => ['hasSideEffects' => true],
9696
'move_uploaded_file' => ['hasSideEffects' => true],
97+
'mysqli_affected_rows' => ['hasSideEffects' => true],
9798
'mysqli_autocommit' => ['hasSideEffects' => true],
9899
'mysqli_begin_transaction' => ['hasSideEffects' => true],
100+
'mysqli_bind_param' => ['hasSideEffects' => true],
101+
'mysqli_bind_result' => ['hasSideEffects' => true],
99102
'mysqli_change_user' => ['hasSideEffects' => true],
103+
'mysqli_character_set_name' => ['hasSideEffects' => true],
104+
'mysqli_client_encoding' => ['hasSideEffects' => true],
100105
'mysqli_close' => ['hasSideEffects' => true],
101106
'mysqli_commit' => ['hasSideEffects' => true],
102107
'mysqli_connect' => ['hasSideEffects' => true],
108+
'mysqli_connect_errno' => ['hasSideEffects' => true],
109+
'mysqli_connect_error' => ['hasSideEffects' => true],
103110
'mysqli_data_seek' => ['hasSideEffects' => true],
104111
'mysqli_debug' => ['hasSideEffects' => true],
105112
'mysqli_dump_debug_info' => ['hasSideEffects' => true],
113+
'mysqli_errno' => ['hasSideEffects' => true],
114+
'mysqli_error' => ['hasSideEffects' => true],
115+
'mysqli_error_list' => ['hasSideEffects' => true],
116+
'mysqli_escape_string' => ['hasSideEffects' => true],
117+
'mysqli_execute' => ['hasSideEffects' => true],
118+
'mysqli_execute_query' => ['hasSideEffects' => true],
119+
'mysqli_fetch' => ['hasSideEffects' => true],
106120
'mysqli_fetch_all' => ['hasSideEffects' => true],
107121
'mysqli_fetch_array' => ['hasSideEffects' => true],
108122
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
109123
'mysqli_fetch_column' => ['hasSideEffects' => true],
110124
'mysqli_fetch_field' => ['hasSideEffects' => true],
111125
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
126+
'mysqli_fetch_fields' => ['hasSideEffects' => true],
127+
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
112128
'mysqli_fetch_object' => ['hasSideEffects' => true],
113129
'mysqli_fetch_row' => ['hasSideEffects' => true],
130+
'mysqli_field_count' => ['hasSideEffects' => true],
114131
'mysqli_field_seek' => ['hasSideEffects' => true],
132+
'mysqli_field_tell' => ['hasSideEffects' => true],
115133
'mysqli_free_result' => ['hasSideEffects' => true],
134+
'mysqli_get_cache_stats' => ['hasSideEffects' => true],
135+
'mysqli_get_charset' => ['hasSideEffects' => true],
136+
'mysqli_get_client_info' => ['hasSideEffects' => true],
137+
'mysqli_get_client_stats' => ['hasSideEffects' => true],
138+
'mysqli_get_client_version' => ['hasSideEffects' => true],
139+
'mysqli_get_connection_stats' => ['hasSideEffects' => true],
140+
'mysqli_get_host_info' => ['hasSideEffects' => true],
141+
'mysqli_get_links_stats' => ['hasSideEffects' => true],
142+
'mysqli_get_metadata' => ['hasSideEffects' => true],
143+
'mysqli_get_proto_info' => ['hasSideEffects' => true],
144+
'mysqli_get_server_info' => ['hasSideEffects' => true],
145+
'mysqli_get_server_version' => ['hasSideEffects' => true],
146+
'mysqli_get_warnings' => ['hasSideEffects' => true],
147+
'mysqli_info' => ['hasSideEffects' => true],
116148
'mysqli_init' => ['hasSideEffects' => true],
149+
'mysqli_insert_id' => ['hasSideEffects' => true],
117150
'mysqli_kill' => ['hasSideEffects' => true],
151+
'mysqli_more_results' => ['hasSideEffects' => true],
118152
'mysqli_multi_query' => ['hasSideEffects' => true],
119153
'mysqli_next_result' => ['hasSideEffects' => true],
154+
'mysqli_num_fields' => ['hasSideEffects' => true],
155+
'mysqli_num_rows' => ['hasSideEffects' => true],
120156
'mysqli_options' => ['hasSideEffects' => true],
157+
'mysqli_param_count' => ['hasSideEffects' => true],
121158
'mysqli_ping' => ['hasSideEffects' => true],
122159
'mysqli_poll' => ['hasSideEffects' => true],
123160
'mysqli_prepare' => ['hasSideEffects' => true],
124161
'mysqli_query' => ['hasSideEffects' => true],
125162
'mysqli_real_connect' => ['hasSideEffects' => true],
163+
'mysqli_real_escape_string' => ['hasSideEffects' => true],
126164
'mysqli_real_query' => ['hasSideEffects' => true],
127165
'mysqli_reap_async_query' => ['hasSideEffects' => true],
128166
'mysqli_refresh' => ['hasSideEffects' => true],
@@ -131,26 +169,47 @@
131169
'mysqli_rollback' => ['hasSideEffects' => true],
132170
'mysqli_savepoint' => ['hasSideEffects' => true],
133171
'mysqli_select_db' => ['hasSideEffects' => true],
172+
'mysqli_send_long_data' => ['hasSideEffects' => true],
134173
'mysqli_set_charset' => ['hasSideEffects' => true],
174+
'mysqli_set_local_infile_default' => ['hasSideEffects' => true],
175+
'mysqli_set_local_infile_handler' => ['hasSideEffects' => true],
176+
'mysqli_set_opt' => ['hasSideEffects' => true],
177+
'mysqli_sqlstate' => ['hasSideEffects' => true],
135178
'mysqli_ssl_set' => ['hasSideEffects' => true],
136179
'mysqli_stat' => ['hasSideEffects' => true],
180+
'mysqli_stmt_affected_rows' => ['hasSideEffects' => true],
181+
'mysqli_stmt_attr_get' => ['hasSideEffects' => true],
137182
'mysqli_stmt_attr_set' => ['hasSideEffects' => true],
138183
'mysqli_stmt_bind_param' => ['hasSideEffects' => true],
139184
'mysqli_stmt_bind_result' => ['hasSideEffects' => true],
140185
'mysqli_stmt_close' => ['hasSideEffects' => true],
141186
'mysqli_stmt_data_seek' => ['hasSideEffects' => true],
187+
'mysqli_stmt_errno' => ['hasSideEffects' => true],
188+
'mysqli_stmt_error' => ['hasSideEffects' => true],
189+
'mysqli_stmt_error_list' => ['hasSideEffects' => true],
142190
'mysqli_stmt_execute' => ['hasSideEffects' => true],
143191
'mysqli_stmt_fetch' => ['hasSideEffects' => true],
192+
'mysqli_stmt_field_count' => ['hasSideEffects' => true],
144193
'mysqli_stmt_free_result' => ['hasSideEffects' => true],
145194
'mysqli_stmt_get_result' => ['hasSideEffects' => true],
195+
'mysqli_stmt_get_warnings' => ['hasSideEffects' => true],
146196
'mysqli_stmt_init' => ['hasSideEffects' => true],
197+
'mysqli_stmt_insert_id' => ['hasSideEffects' => true],
198+
'mysqli_stmt_more_results' => ['hasSideEffects' => true],
147199
'mysqli_stmt_next_result' => ['hasSideEffects' => true],
200+
'mysqli_stmt_num_rows' => ['hasSideEffects' => true],
201+
'mysqli_stmt_param_count' => ['hasSideEffects' => true],
148202
'mysqli_stmt_prepare' => ['hasSideEffects' => true],
149203
'mysqli_stmt_reset' => ['hasSideEffects' => true],
204+
'mysqli_stmt_result_metadata' => ['hasSideEffects' => true],
150205
'mysqli_stmt_send_long_data' => ['hasSideEffects' => true],
206+
'mysqli_stmt_sqlstate' => ['hasSideEffects' => true],
151207
'mysqli_stmt_store_result' => ['hasSideEffects' => true],
152208
'mysqli_store_result' => ['hasSideEffects' => true],
209+
'mysqli_thread_id' => ['hasSideEffects' => true],
210+
'mysqli_thread_safe' => ['hasSideEffects' => true],
153211
'mysqli_use_result' => ['hasSideEffects' => true],
212+
'mysqli_warning_count' => ['hasSideEffects' => true],
154213
'ob_clean' => ['hasSideEffects' => true],
155214
'ob_end_clean' => ['hasSideEffects' => true],
156215
'ob_end_flush' => ['hasSideEffects' => true],

resources/functionMetadata.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,35 +1392,73 @@
13921392
'msgfmt_parse_message' => ['hasSideEffects' => false],
13931393
'mt_getrandmax' => ['hasSideEffects' => false],
13941394
'mt_rand' => ['hasSideEffects' => true],
1395+
'mysqli_affected_rows' => ['hasSideEffects' => true],
13951396
'mysqli_autocommit' => ['hasSideEffects' => true],
13961397
'mysqli_begin_transaction' => ['hasSideEffects' => true],
1398+
'mysqli_bind_param' => ['hasSideEffects' => true],
1399+
'mysqli_bind_result' => ['hasSideEffects' => true],
13971400
'mysqli_change_user' => ['hasSideEffects' => true],
1401+
'mysqli_character_set_name' => ['hasSideEffects' => true],
1402+
'mysqli_client_encoding' => ['hasSideEffects' => true],
13981403
'mysqli_close' => ['hasSideEffects' => true],
13991404
'mysqli_commit' => ['hasSideEffects' => true],
14001405
'mysqli_connect' => ['hasSideEffects' => true],
1406+
'mysqli_connect_errno' => ['hasSideEffects' => true],
1407+
'mysqli_connect_error' => ['hasSideEffects' => true],
14011408
'mysqli_data_seek' => ['hasSideEffects' => true],
14021409
'mysqli_debug' => ['hasSideEffects' => true],
14031410
'mysqli_dump_debug_info' => ['hasSideEffects' => true],
1411+
'mysqli_errno' => ['hasSideEffects' => true],
1412+
'mysqli_error' => ['hasSideEffects' => true],
1413+
'mysqli_error_list' => ['hasSideEffects' => true],
1414+
'mysqli_escape_string' => ['hasSideEffects' => true],
1415+
'mysqli_execute' => ['hasSideEffects' => true],
1416+
'mysqli_execute_query' => ['hasSideEffects' => true],
1417+
'mysqli_fetch' => ['hasSideEffects' => true],
14041418
'mysqli_fetch_all' => ['hasSideEffects' => true],
14051419
'mysqli_fetch_array' => ['hasSideEffects' => true],
14061420
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
14071421
'mysqli_fetch_column' => ['hasSideEffects' => true],
14081422
'mysqli_fetch_field' => ['hasSideEffects' => true],
14091423
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
1424+
'mysqli_fetch_fields' => ['hasSideEffects' => true],
1425+
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
14101426
'mysqli_fetch_object' => ['hasSideEffects' => true],
14111427
'mysqli_fetch_row' => ['hasSideEffects' => true],
1428+
'mysqli_field_count' => ['hasSideEffects' => true],
14121429
'mysqli_field_seek' => ['hasSideEffects' => true],
1430+
'mysqli_field_tell' => ['hasSideEffects' => true],
14131431
'mysqli_free_result' => ['hasSideEffects' => true],
1432+
'mysqli_get_cache_stats' => ['hasSideEffects' => true],
1433+
'mysqli_get_charset' => ['hasSideEffects' => true],
1434+
'mysqli_get_client_info' => ['hasSideEffects' => true],
1435+
'mysqli_get_client_stats' => ['hasSideEffects' => true],
1436+
'mysqli_get_client_version' => ['hasSideEffects' => true],
1437+
'mysqli_get_connection_stats' => ['hasSideEffects' => true],
1438+
'mysqli_get_host_info' => ['hasSideEffects' => true],
1439+
'mysqli_get_links_stats' => ['hasSideEffects' => true],
1440+
'mysqli_get_metadata' => ['hasSideEffects' => true],
1441+
'mysqli_get_proto_info' => ['hasSideEffects' => true],
1442+
'mysqli_get_server_info' => ['hasSideEffects' => true],
1443+
'mysqli_get_server_version' => ['hasSideEffects' => true],
1444+
'mysqli_get_warnings' => ['hasSideEffects' => true],
1445+
'mysqli_info' => ['hasSideEffects' => true],
14141446
'mysqli_init' => ['hasSideEffects' => true],
1447+
'mysqli_insert_id' => ['hasSideEffects' => true],
14151448
'mysqli_kill' => ['hasSideEffects' => true],
1449+
'mysqli_more_results' => ['hasSideEffects' => true],
14161450
'mysqli_multi_query' => ['hasSideEffects' => true],
14171451
'mysqli_next_result' => ['hasSideEffects' => true],
1452+
'mysqli_num_fields' => ['hasSideEffects' => true],
1453+
'mysqli_num_rows' => ['hasSideEffects' => true],
14181454
'mysqli_options' => ['hasSideEffects' => true],
1455+
'mysqli_param_count' => ['hasSideEffects' => true],
14191456
'mysqli_ping' => ['hasSideEffects' => true],
14201457
'mysqli_poll' => ['hasSideEffects' => true],
14211458
'mysqli_prepare' => ['hasSideEffects' => true],
14221459
'mysqli_query' => ['hasSideEffects' => true],
14231460
'mysqli_real_connect' => ['hasSideEffects' => true],
1461+
'mysqli_real_escape_string' => ['hasSideEffects' => true],
14241462
'mysqli_real_query' => ['hasSideEffects' => true],
14251463
'mysqli_reap_async_query' => ['hasSideEffects' => true],
14261464
'mysqli_refresh' => ['hasSideEffects' => true],
@@ -1429,26 +1467,47 @@
14291467
'mysqli_rollback' => ['hasSideEffects' => true],
14301468
'mysqli_savepoint' => ['hasSideEffects' => true],
14311469
'mysqli_select_db' => ['hasSideEffects' => true],
1470+
'mysqli_send_long_data' => ['hasSideEffects' => true],
14321471
'mysqli_set_charset' => ['hasSideEffects' => true],
1472+
'mysqli_set_local_infile_default' => ['hasSideEffects' => true],
1473+
'mysqli_set_local_infile_handler' => ['hasSideEffects' => true],
1474+
'mysqli_set_opt' => ['hasSideEffects' => true],
1475+
'mysqli_sqlstate' => ['hasSideEffects' => true],
14331476
'mysqli_ssl_set' => ['hasSideEffects' => true],
14341477
'mysqli_stat' => ['hasSideEffects' => true],
1478+
'mysqli_stmt_affected_rows' => ['hasSideEffects' => true],
1479+
'mysqli_stmt_attr_get' => ['hasSideEffects' => true],
14351480
'mysqli_stmt_attr_set' => ['hasSideEffects' => true],
14361481
'mysqli_stmt_bind_param' => ['hasSideEffects' => true],
14371482
'mysqli_stmt_bind_result' => ['hasSideEffects' => true],
14381483
'mysqli_stmt_close' => ['hasSideEffects' => true],
14391484
'mysqli_stmt_data_seek' => ['hasSideEffects' => true],
1485+
'mysqli_stmt_errno' => ['hasSideEffects' => true],
1486+
'mysqli_stmt_error' => ['hasSideEffects' => true],
1487+
'mysqli_stmt_error_list' => ['hasSideEffects' => true],
14401488
'mysqli_stmt_execute' => ['hasSideEffects' => true],
14411489
'mysqli_stmt_fetch' => ['hasSideEffects' => true],
1490+
'mysqli_stmt_field_count' => ['hasSideEffects' => true],
14421491
'mysqli_stmt_free_result' => ['hasSideEffects' => true],
14431492
'mysqli_stmt_get_result' => ['hasSideEffects' => true],
1493+
'mysqli_stmt_get_warnings' => ['hasSideEffects' => true],
14441494
'mysqli_stmt_init' => ['hasSideEffects' => true],
1495+
'mysqli_stmt_insert_id' => ['hasSideEffects' => true],
1496+
'mysqli_stmt_more_results' => ['hasSideEffects' => true],
14451497
'mysqli_stmt_next_result' => ['hasSideEffects' => true],
1498+
'mysqli_stmt_num_rows' => ['hasSideEffects' => true],
1499+
'mysqli_stmt_param_count' => ['hasSideEffects' => true],
14461500
'mysqli_stmt_prepare' => ['hasSideEffects' => true],
14471501
'mysqli_stmt_reset' => ['hasSideEffects' => true],
1502+
'mysqli_stmt_result_metadata' => ['hasSideEffects' => true],
14481503
'mysqli_stmt_send_long_data' => ['hasSideEffects' => true],
1504+
'mysqli_stmt_sqlstate' => ['hasSideEffects' => true],
14491505
'mysqli_stmt_store_result' => ['hasSideEffects' => true],
14501506
'mysqli_store_result' => ['hasSideEffects' => true],
1507+
'mysqli_thread_id' => ['hasSideEffects' => true],
1508+
'mysqli_thread_safe' => ['hasSideEffects' => true],
14511509
'mysqli_use_result' => ['hasSideEffects' => true],
1510+
'mysqli_warning_count' => ['hasSideEffects' => true],
14521511
'net_get_interfaces' => ['hasSideEffects' => false],
14531512
'ngettext' => ['hasSideEffects' => false],
14541513
'nl2br' => ['hasSideEffects' => false],

0 commit comments

Comments
 (0)