Formatting And Syntax Highlighting

Usage:
    
<?php
$formatted 
SqlFormatter::format($sql);
?>
Original Formatted And Highlighted
SELECT * FROM MyTable WHERE id = 46
SELECT 
  * 
FROM 
  MyTable 
WHERE 
  id = 46
SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10
SELECT 
  count(*), 
  `Column1`, 
  `Testing`, 
  `Testing Three` 
FROM 
  `Table1` 
WHERE 
  Column1 = 'testing' AND (
    (
      `Column2` = `Column3` OR Column4 >= NOW() 
    ) 
  ) 
GROUP BY 
  Column1 
ORDER BY 
  Column3 DESC 
LIMIT 
  5, 
  10
select * from `Table`, (SELECT group_concat(column1) as col FROM Table2 GROUP BY category)
    Table2, Table3 where Table2.col = (Table3.col2 - `Table`.id)
select 
  * 
from 
  `Table`, 
  (
    SELECT 
      group_concat(column1) as col 
    FROM 
      Table2 
    GROUP BY 
      category 
  ) Table2, 
  Table3 
where 
  Table2.col = (
    Table3.col2 - `Table`.id 
  )
insert ignore into Table3 (column1, column2) VALUES ('test1','test2'), ('test3','test4');
insert ignore into Table3 (
    column1, 
    column2 
  ) 
VALUES 
  (
    'test1', 
    'test2' 
  ), 
  (
    'test3', 
    'test4' 
  );
UPDATE MyTable SET name='sql', category='databases' WHERE id > '65'
UPDATE 
  MyTable 
SET 
  name = 'sql', 
  category = 'databases' 
WHERE 
  id > '65'
delete from MyTable WHERE name LIKE "test%"
delete 
from 
  MyTable 
WHERE 
  name LIKE "test%"
SELECT * FROM UnmatchedParens WHERE ( A = B)) AND (((Test=1)
SELECT 
  * 
FROM 
  UnmatchedParens 
WHERE 
  (
    A = B 
  ) ) AND (
(
(
        Test = 1 
      ) 
WARNING: unclosed parentheses or section
-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;
-- This is a comment
SELECT 
  /* This is another comment
    On more than one line */
  Id #This is one final comment
  as temp, 
  DateCreated as Created 
FROM 
  MyTable;

Formatting Only

Usage:
    
<?php
$formatted 
SqlFormatter::format($sqlfalse);
?>
Original Formatted
SELECT * FROM MyTable WHERE id = 46
SELECT 
  * 
FROM 
  MyTable 
WHERE 
  id = 46
SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10
SELECT 
  count(*), 
  `Column1`, 
  `Testing`, 
  `Testing Three` 
FROM 
  `Table1` 
WHERE 
  Column1 = 'testing' AND (
    (
      `Column2` = `Column3` OR Column4 >= NOW() 
    ) 
  ) 
GROUP BY 
  Column1 
ORDER BY 
  Column3 DESC 
LIMIT 
  5, 
  10
select * from `Table`, (SELECT group_concat(column1) as col FROM Table2 GROUP BY category)
    Table2, Table3 where Table2.col = (Table3.col2 - `Table`.id)
select 
  * 
from 
  `Table`, 
  (
    SELECT 
      group_concat(column1) as col 
    FROM 
      Table2 
    GROUP BY 
      category 
  ) Table2, 
  Table3 
where 
  Table2.col = (
    Table3.col2 - `Table`.id 
  )
insert ignore into Table3 (column1, column2) VALUES ('test1','test2'), ('test3','test4');
insert ignore into Table3 (
    column1, 
    column2 
  ) 
VALUES 
  (
    'test1', 
    'test2' 
  ), 
  (
    'test3', 
    'test4' 
  );
UPDATE MyTable SET name='sql', category='databases' WHERE id > '65'
UPDATE 
  MyTable 
SET 
  name = 'sql', 
  category = 'databases' 
WHERE 
  id > '65'
delete from MyTable WHERE name LIKE "test%"
delete 
from 
  MyTable 
WHERE 
  name LIKE "test%"
SELECT * FROM UnmatchedParens WHERE ( A = B)) AND (((Test=1)
SELECT 
  * 
FROM 
  UnmatchedParens 
WHERE 
  (
    A = B 
  ) )AND (
(
(
        Test = 1 
      )
-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;
-- This is a comment
SELECT 
  /* This is another comment
    On more than one line */
  Id #This is one final comment
  as temp, 
  DateCreated as Created 
FROM 
  MyTable;

Syntax Highlighting Only

Usage:
    
<?php
$highlighted 
SqlFormatter::highlight($sql);
?>
Original Highlighted
SELECT * FROM MyTable WHERE id = 46
SELECT * FROM MyTable WHERE id = 46
SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10
SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
    WHERE Column1 = 'testing' AND ( (`Column2` = `Column3` OR Column4 >= NOW()) )
    GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10
select * from `Table`, (SELECT group_concat(column1) as col FROM Table2 GROUP BY category)
    Table2, Table3 where Table2.col = (Table3.col2 - `Table`.id)
select * from `Table`, (SELECT group_concat(column1) as col FROM Table2 GROUP BY category)
    Table2, Table3 where Table2.col = (Table3.col2 - `Table`.id)
insert ignore into Table3 (column1, column2) VALUES ('test1','test2'), ('test3','test4');
insert ignore into Table3 (column1, column2) VALUES ('test1','test2'), ('test3','test4');
UPDATE MyTable SET name='sql', category='databases' WHERE id > '65'
UPDATE MyTable SET name='sql', category='databases' WHERE id > '65'
delete from MyTable WHERE name LIKE "test%"
delete from MyTable WHERE name LIKE "test%"
SELECT * FROM UnmatchedParens WHERE ( A = B)) AND (((Test=1)
SELECT * FROM UnmatchedParens WHERE ( A = B)) AND (((Test=1)
-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;
-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;

Splitting SQL Strings Into Individual Queries

Usage:
    
<?php
$queries 
SqlFormatter::splitQuery($sql);
?>
Original Split
DROP TABLE IF EXISTS MyTable;
    CREATE TABLE MyTable ( id int );
    INSERT INTO MyTable    (id)
        VALUES
        (1),(2),(3),(4);
    SELECT * FROM MyTable;
  1. DROP TABLE IF EXISTS MyTable
  2. CREATE TABLE MyTable ( id int )
  3. INSERT INTO MyTable    (id)
            VALUES
            (1),(2),(3),(4)
  4. SELECT * FROM MyTable
SELECT ";"; SELECT ";\"; a;";
    SELECT ";
        abc";
    SELECT a,b #comment;
    FROM test;
  1. SELECT ";"
  2. SELECT ";\"; a;"
  3. SELECT ";
            abc"
  4. SELECT a,b 
        FROM test

Removing Comments

Usage:
    
<?php
$nocomments 
SqlFormatter::removeComments($sql);
?>
Original Comments Removed
-- This is a comment
    SELECT
    /* This is another comment
    On more than one line */
    Id #This is one final comment
    as temp, DateCreated as Created FROM MyTable;

    SELECT
    
    Id 
    as temp, DateCreated as Created FROM MyTable;