$line) { if (preg_match('/\$(\w+)\s*=\s*\$pdo->prepare\("(.*?)"\)/', $line, $m)) { $prepares[$m[1]] = substr_count($m[2], '?'); } if (preg_match('/\$(\w+)->execute\(\[(.*?)(\s*,.*?)?\]\)/', $line, $m)) { $q_marks = $prepares[$m[1]] ?? -1; $exec_count = isset($m[2]) && trim($m[2]) !== '' ? count(explode(',', $m[2])) : 0; if ($q_marks !== -1 && $q_marks !== $exec_count) { echo "MISMATCH on line " . ($i+1) . " for $" . $m[1] . "\n"; echo "Expected: $q_marks\n"; echo "Got: $exec_count (" . (isset($m[2]) ? $m[2] : '') . ")\n"; } } } echo "Done.\n";