PHPackages                             phpmyadmin/sql-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. phpmyadmin/sql-parser

ActiveLibrary[Database &amp; ORM](/categories/database)

phpmyadmin/sql-parser
=====================

A validating SQL lexer and parser with a focus on MySQL dialect.

6.0.0(6mo ago)47950.4M—1.5%116[56 issues](https://github.com/phpmyadmin/sql-parser/issues)[11 PRs](https://github.com/phpmyadmin/sql-parser/pulls)20GPL-2.0-or-laterPHPPHP ^8.2CI failing

Since Aug 20Pushed 1w ago21 watchersCompare

[ Source](https://github.com/phpmyadmin/sql-parser)[ Packagist](https://packagist.org/packages/phpmyadmin/sql-parser)[ Docs](https://github.com/phpmyadmin/sql-parser)[ Fund](https://www.phpmyadmin.net/donate/)[ RSS](/packages/phpmyadmin-sql-parser/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (13)Versions (100)Used By (20)

SQL Parser
==========

[](#sql-parser)

A validating SQL lexer and parser with a focus on MySQL dialect.

Code status
-----------

[](#code-status)

[![Tests](https://github.com/phpmyadmin/sql-parser/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/phpmyadmin/sql-parser/actions/workflows/tests.yml?query=branch%3Amaster)[![Code Coverage](https://camo.githubusercontent.com/e1571626964674a2b42dc6fcd48d13bdfa1ec4ea7188785f4272b2af2a143383/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7068706d7961646d696e2f73716c2d7061727365722f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master)[![codecov.io](https://camo.githubusercontent.com/b749697473d31bb56605277e78811160aca2ffd60850888abbcc437b18018672/68747470733a2f2f636f6465636f762e696f2f6769746875622f7068706d7961646d696e2f73716c2d7061727365722f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://codecov.io/github/phpmyadmin/sql-parser?branch=master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/430849b3942f80d12afcacc31880fecec999a16a52e1a72deaac28dd4c4fdf8b/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7068706d7961646d696e2f73716c2d7061727365722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master)[![Translation status](https://camo.githubusercontent.com/ad8ae706f3a0e629cfaef93efa631809ae588e16019cd2de8c29e4a53ef80da6/68747470733a2f2f686f737465642e7765626c6174652e6f72672f776964676574732f7068706d7961646d696e2f2d2f7376672d62616467652e737667)](https://hosted.weblate.org/engage/phpmyadmin/?utm_source=widget)[![Packagist](https://camo.githubusercontent.com/29c46741ff379560f9e1a6d9c5bdfeb3e15d1e5f296eb8522d1e97312413e7b8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7068706d7961646d696e2f73716c2d7061727365722e737667)](https://packagist.org/packages/phpmyadmin/sql-parser)[![Open Source Helpers](https://camo.githubusercontent.com/ab5952005e11b83e995cb167cb2c1d3869eeaf73f5ce13b7db6edf5884ec220d/68747470733a2f2f7777772e636f64657472696167652e636f6d2f7068706d7961646d696e2f73716c2d7061727365722f6261646765732f75736572732e737667)](https://www.codetriage.com/phpmyadmin/sql-parser)[![Type coverage](https://camo.githubusercontent.com/2e67ff97bab91314474e16959a9671c153435598dd595c1cab1903a20fedcdcd/68747470733a2f2f73686570686572642e6465762f6769746875622f7068706d7961646d696e2f73716c2d7061727365722f636f7665726167652e737667)](https://shepherd.dev/github/phpmyadmin/sql-parser)[![Infection MSI](https://camo.githubusercontent.com/fa5ef14bce4bbe4738bd95c02e6e7f01c2145dd192ca4f39e8416fa3844c36f1/68747470733a2f2f62616467652e737472796b65722d6d757461746f722e696f2f6769746875622e636f6d2f7068706d7961646d696e2f73716c2d7061727365722f6d6173746572)](https://infection.github.io)

Installation
------------

[](#installation)

Please use [Composer](https://getcomposer.org/) to install:

```
composer require phpmyadmin/sql-parser
```

Documentation
-------------

[](#documentation)

The API documentation is available at .

Usage
-----

[](#usage)

### Command line utilities

[](#command-line-utilities)

Command line utility to syntax highlight SQL query:

```
./vendor/bin/sql-parser --highlight --query "SELECT 1"
```

Command line utility to lint SQL query:

```
./vendor/bin/sql-parser --lint --query "SELECT 1"
```

Command line utility to tokenize SQL query:

```
./vendor/bin/sql-parser --tokenize --query "SELECT 1"
```

All commands are able to parse input from stdin (standard in), such as:

```
echo "SELECT 1" | ./vendor/bin/sql-parser --highlight
cat example.sql | ./vendor/bin/sql-parser --lint
```

### Formatting SQL query

[](#formatting-sql-query)

```
echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, ['type' => 'html']);
```

### Discoverying query type

[](#discoverying-query-type)

```
use PhpMyAdmin\SqlParser\Parser;
use PhpMyAdmin\SqlParser\Utils\Query;

$query = 'OPTIMIZE TABLE tbl';
$parser = new Parser($query);
$flags = Query::getFlags($parser->statements[0]);

echo $flags->queryType?->value;
```

### Parsing and building SQL query

[](#parsing-and-building-sql-query)

```
require __DIR__ . '/vendor/autoload.php';

$query1 = 'select * from a';
$parser = new PhpMyAdmin\SqlParser\Parser($query1);

// inspect query
var_dump($parser->statements[0]); // outputs object(PhpMyAdmin\SqlParser\Statements\SelectStatement)

// modify query by replacing table a with table b
$table2 = new \PhpMyAdmin\SqlParser\Components\Expression('', 'b', '', '');
$parser->statements[0]->from[0] = $table2;

// build query again from an array of object(PhpMyAdmin\SqlParser\Statements\SelectStatement) to a string
$statement = $parser->statements[0];
$query2 = $statement->build();
var_dump($query2); // outputs string(19) 'SELECT  * FROM `b` '

// Change SQL mode
PhpMyAdmin\SqlParser\Context::setMode(PhpMyAdmin\SqlParser\Context::SQL_MODE_ANSI_QUOTES);

// build the query again using different quotes
$query2 = $statement->build();
var_dump($query2); // outputs string(19) 'SELECT  * FROM "b" '
```

Localization
------------

[](#localization)

You can localize error messages installing `phpmyadmin/motranslator` version `5.0` or newer:

```
composer require phpmyadmin/motranslator:^5.0
```

The locale is automatically detected from your environment, you can also set a different locale

**From cli**:

```
LC_ALL=pl ./vendor/bin/sql-parser --lint --query "SELECT 1"
```

**From php**:

```
require __DIR__ . '/vendor/autoload.php';

PhpMyAdmin\SqlParser\Translator::setLocale('pl');

$query1 = 'select * from a';
$parser = new PhpMyAdmin\SqlParser\Parser($query1);
```

More information
----------------

[](#more-information)

This library was originally created during the Google Summer of Code 2015 and has been used by phpMyAdmin since version 4.5.

###  Health Score

77

—

ExcellentBetter than 100% of packages

Maintenance82

Actively maintained with recent releases

Popularity72

Solid adoption and visibility

Community46

Growing community involvement

Maturity92

Battle-tested with a long release history

 Bus Factor3

3 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~38 days

Recently: every ~63 days

Total

99

Last Release

199d ago

Major Versions

4.7.1 → 5.4.12020-10-15

4.7.2 → 5.4.22021-02-05

4.7.3 → 5.5.02021-12-09

4.7.x-dev → 5.6.02023-01-02

5.11.x-dev → 6.0.x-dev2025-10-31

PHP version history (8 changes)v1.0.0PHP &gt;=5.3.0

v3.0.8PHP &gt;=5.5.0

v3.1.0PHP &gt;=5.4.0

5.0.0PHP ^7.1

4.7.2PHP ^5.3.0 || ^7.0

5.4.2PHP ^7.1 || ^8.0

5.7.0PHP ^7.2 || ^8.0

6.0.x-devPHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/2b390aa578181e22baeeb561a42eba29a6fdbbd360d3d967afc59cdb8ff98ef7?d=identicon)[phpmyadmin](/maintainers/phpmyadmin)

---

Top Contributors

[![williamdes](https://avatars.githubusercontent.com/u/7784660?v=4)](https://github.com/williamdes "williamdes (619 commits)")[![nijel](https://avatars.githubusercontent.com/u/212189?v=4)](https://github.com/nijel "nijel (440 commits)")[![MauricioFauth](https://avatars.githubusercontent.com/u/120970?v=4)](https://github.com/MauricioFauth "MauricioFauth (329 commits)")[![udan11](https://avatars.githubusercontent.com/u/4147664?v=4)](https://github.com/udan11 "udan11 (217 commits)")[![kamil-tekiela](https://avatars.githubusercontent.com/u/6583064?v=4)](https://github.com/kamil-tekiela "kamil-tekiela (152 commits)")[![devenbansod](https://avatars.githubusercontent.com/u/5762808?v=4)](https://github.com/devenbansod "devenbansod (111 commits)")[![iifawzi](https://avatars.githubusercontent.com/u/46695441?v=4)](https://github.com/iifawzi "iifawzi (83 commits)")[![niconoe-](https://avatars.githubusercontent.com/u/9560327?v=4)](https://github.com/niconoe- "niconoe- (76 commits)")[![ibennetch](https://avatars.githubusercontent.com/u/1443710?v=4)](https://github.com/ibennetch "ibennetch (58 commits)")[![liviuconcioiu](https://avatars.githubusercontent.com/u/25424343?v=4)](https://github.com/liviuconcioiu "liviuconcioiu (45 commits)")[![bigfoot90](https://avatars.githubusercontent.com/u/4598274?v=4)](https://github.com/bigfoot90 "bigfoot90 (40 commits)")[![MoonE](https://avatars.githubusercontent.com/u/4426597?v=4)](https://github.com/MoonE "MoonE (18 commits)")[![krisfremen](https://avatars.githubusercontent.com/u/1108071?v=4)](https://github.com/krisfremen "krisfremen (18 commits)")[![weblate](https://avatars.githubusercontent.com/u/1607653?v=4)](https://github.com/weblate "weblate (13 commits)")[![Tithugues](https://avatars.githubusercontent.com/u/1165150?v=4)](https://github.com/Tithugues "Tithugues (11 commits)")[![madhuracj](https://avatars.githubusercontent.com/u/1410004?v=4)](https://github.com/madhuracj "madhuracj (8 commits)")[![mostertb](https://avatars.githubusercontent.com/u/2180195?v=4)](https://github.com/mostertb "mostertb (7 commits)")[![yarons](https://avatars.githubusercontent.com/u/406826?v=4)](https://github.com/yarons "yarons (6 commits)")[![victorenator](https://avatars.githubusercontent.com/u/988209?v=4)](https://github.com/victorenator "victorenator (6 commits)")[![yagoub76](https://avatars.githubusercontent.com/u/30188194?v=4)](https://github.com/yagoub76 "yagoub76 (5 commits)")

---

Tags

lexer-librarylintermariadbmysqlparserphp-libraryphp-sql-analyzerphp-sql-highlighterphp-sql-parserphp-sql-tokenizersqlsql-analyzersql-buildersql-lintsql-lintersql-parsersql-parsingsql-querysql-syntax-parsersql-tokenizingparsersqllexeranalysissql syntax highlightersql lexersql tokenizersql parsersql linterquery linter

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/phpmyadmin-sql-parser/health.svg)

```
[![Health](https://phpackages.com/badges/phpmyadmin-sql-parser/health.svg)](https://phpackages.com/packages/phpmyadmin-sql-parser)
```

###  Alternatives

[greenlion/php-sql-parser

A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL

63911.6M82](/packages/greenlion-php-sql-parser)[timgws/query-builder-parser

Build complex Eloquent &amp; QueryBuilder queries automatically when using jQuery-QueryBuilder

159387.8k](/packages/timgws-query-builder-parser)[sad_spirit/pg_builder

Query builder for Postgres backed by SQL parser

5933.6k1](/packages/sad-spirit-pg-builder)[nilportugues/sql-query-formatter

A very lightweight PHP class that reformats unreadable and computer-generated SQL query statements to human-friendly, readable text.

401.1M24](/packages/nilportugues-sql-query-formatter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
