File: README.md

package info (click to toggle)
php-sql-formatter 1.2.17%2Bdct1.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 652 kB
  • sloc: php: 1,745; sql: 271; xml: 18; makefile: 14
file content (110 lines) | stat: -rw-r--r-- 2,750 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# SqlFormatter

A lightweight php package for formatting sql statements.

It can automatically indent and add line breaks in addition to syntax
highlighting.

## History

This package is a fork from https://github.com/jdorn/sql-formatter
Here is what the original History section says:

> I found myself having to debug auto-generated SQL statements all the time and
> wanted some way to easily output formatted HTML without having to include a
> huge library or copy and paste into online formatters.

> I was originally planning to extract the formatting code from PhpMyAdmin,
> but that was 10,000+ lines of code and used global variables.

> I saw that other people had the same problem and used Stack Overflow user
> losif's answer as a starting point.  http://stackoverflow.com/a/3924147

― @jdorn

## Usage

The `SqlFormatter` class has a method `format` which takes an SQL string as
input and returns a formatted HTML block inside a `pre` tag.

Sample usage:

```php
<?php
require_once 'vendor/autoload.php';

use Doctrine\SqlFormatter\SqlFormatter;

$query = "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";

echo (new SqlFormatter())->format($query);
```

Output:

![](http://jdorn.github.com/sql-formatter/format-highlight.png)

### Formatting Only

If you don't want syntax highlighting and only want the indentations and
line breaks, pass in a `NullHighlighter` instance as the second parameter.

This is useful for outputting to error logs or other non-html formats.

```php
<?php

use Doctrine\SqlFormatter\NullHighlighter;
use Doctrine\SqlFormatter\SqlFormatter;

echo (new SqlFormatter(new NullHighlighter()))->format($query);
```

Output:

![](http://jdorn.github.com/sql-formatter/format.png)

### Syntax Highlighting Only

There is a separate method `highlight` that preserves all original whitespace
and just adds syntax highlighting.

This is useful for sql that is already well formatted and just needs to be a
little easier to read.

```php
<?php
echo (new SqlFormatter())->highlight($query);
```

Output:

![](http://jdorn.github.com/sql-formatter/highlight.png)

### Compress Query

The `compress` method removes all comments and compresses whitespace.

This is useful for outputting queries that can be copy pasted to the command
line easily.

```sql
-- 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;
```

```php
echo (new SqlFormatter())->compress($query)
```

Output:

```sql
SELECT Id as temp, DateCreated as Created FROM MyTable;
```