diff --git a/lib/Service/SqlGuard.php b/lib/Service/SqlGuard.php index 392b415..e9e5990 100644 --- a/lib/Service/SqlGuard.php +++ b/lib/Service/SqlGuard.php @@ -87,8 +87,9 @@ class SqlGuard $statements[] = trim($current); + // A trailing comment ("SELECT 1; -- note") is not a statement return array_values(array_filter($statements, function ($s) { - return $s !== ''; + return trim(self::removeComments($s)) !== ''; })); } diff --git a/tests/Unit/Service/SqlGuardTest.php b/tests/Unit/Service/SqlGuardTest.php index 9c23193..38da012 100644 --- a/tests/Unit/Service/SqlGuardTest.php +++ b/tests/Unit/Service/SqlGuardTest.php @@ -167,6 +167,10 @@ class SqlGuardTest extends TestCase ["/* it's; here */ SELECT 1; SELECT 2", ["/* it's; here */ SELECT 1", 'SELECT 2']], ['SELECT \$1; SELECT 2', ['SELECT \$1', 'SELECT 2']], [' ; ;SELECT 1;', ['SELECT 1']], + ["SELECT 1; --full", ['SELECT 1']], + ["SELECT 1; -- note\nSELECT 2", ['SELECT 1', "-- note\nSELECT 2"]], + ["-- only a comment", []], + ["SELECT 1; /* note */", ['SELECT 1']], ]; }