{"id":13793015,"url":"https://github.com/phpmyadmin/sql-parser","last_synced_at":"2025-04-27T04:29:10.634Z","repository":{"id":32668208,"uuid":"36256604","full_name":"phpmyadmin/sql-parser","owner":"phpmyadmin","description":"A validating SQL lexer and parser with a focus on MySQL dialect.","archived":false,"fork":false,"pushed_at":"2025-03-29T01:49:44.000Z","size":26201,"stargazers_count":456,"open_issues_count":49,"forks_count":105,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-26T11:41:58.325Z","etag":null,"topics":["lexer-library","linter","mariadb","mysql","parser","php-library","php-sql-analyzer","php-sql-highlighter","php-sql-parser","php-sql-tokenizer","sql","sql-analyzer","sql-builder","sql-lint","sql-linter","sql-parser","sql-parsing","sql-query","sql-syntax-parser","sql-tokenizing"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/phpmyadmin/sql-parser","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phpmyadmin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"https://www.phpmyadmin.net/donate/"}},"created_at":"2015-05-25T21:56:25.000Z","updated_at":"2025-04-06T09:46:06.000Z","dependencies_parsed_at":"2024-08-01T03:08:48.597Z","dependency_job_id":"f342e903-96f5-452f-940a-56f2b7110b19","html_url":"https://github.com/phpmyadmin/sql-parser","commit_stats":{"total_commits":1926,"total_committers":203,"mean_commits":9.48768472906404,"dds":0.8078920041536863,"last_synced_commit":"98b704ce46e0443209b1762d679020e0a17c4f05"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpmyadmin%2Fsql-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpmyadmin%2Fsql-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpmyadmin%2Fsql-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpmyadmin%2Fsql-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phpmyadmin","download_url":"https://codeload.github.com/phpmyadmin/sql-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251088321,"owners_count":21534418,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lexer-library","linter","mariadb","mysql","parser","php-library","php-sql-analyzer","php-sql-highlighter","php-sql-parser","php-sql-tokenizer","sql","sql-analyzer","sql-builder","sql-lint","sql-linter","sql-parser","sql-parsing","sql-query","sql-syntax-parser","sql-tokenizing"],"created_at":"2024-08-03T22:01:20.355Z","updated_at":"2025-04-27T04:29:10.591Z","avatar_url":"https://github.com/phpmyadmin.png","language":"PHP","readme":"# SQL Parser\n\nA validating SQL lexer and parser with a focus on MySQL dialect.\n\n## Code status\n\n[![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)\n[![Code Coverage](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master)\n[![codecov.io](https://codecov.io/github/phpmyadmin/sql-parser/coverage.svg?branch=master)](https://codecov.io/github/phpmyadmin/sql-parser?branch=master)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master)\n[![Translation status](https://hosted.weblate.org/widgets/phpmyadmin/-/svg-badge.svg)](https://hosted.weblate.org/engage/phpmyadmin/?utm_source=widget)\n[![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/sql-parser.svg)](https://packagist.org/packages/phpmyadmin/sql-parser)\n[![Open Source Helpers](https://www.codetriage.com/phpmyadmin/sql-parser/badges/users.svg)](https://www.codetriage.com/phpmyadmin/sql-parser)\n[![Type coverage](https://shepherd.dev/github/phpmyadmin/sql-parser/coverage.svg)](https://shepherd.dev/github/phpmyadmin/sql-parser)\n[![Infection MSI](https://badge.stryker-mutator.io/github.com/phpmyadmin/sql-parser/master)](https://infection.github.io)\n\n## Installation\n\nPlease use [Composer][1] to install:\n\n```sh\ncomposer require phpmyadmin/sql-parser\n```\n\n## Documentation\n\nThe API documentation is available at\n\u003chttps://develdocs.phpmyadmin.net/sql-parser/\u003e.\n\n## Usage\n\n### Command line utilities\n\nCommand line utility to syntax highlight SQL query:\n\n```sh\n./vendor/bin/sql-parser --highlight --query \"SELECT 1\"\n```\n\nCommand line utility to lint SQL query:\n\n```sh\n./vendor/bin/sql-parser --lint --query \"SELECT 1\"\n```\n\nCommand line utility to tokenize SQL query:\n\n```sh\n./vendor/bin/sql-parser --tokenize --query \"SELECT 1\"\n```\n\nAll commands are able to parse input from stdin (standard in), such as:\n\n```sh\necho \"SELECT 1\" | ./vendor/bin/sql-parser --highlight\ncat example.sql | ./vendor/bin/sql-parser --lint\n```\n\n### Formatting SQL query\n\n```php\necho PhpMyAdmin\\SqlParser\\Utils\\Formatter::format($query, ['type' =\u003e 'html']);\n```\n\n### Discoverying query type\n\n```php\nuse PhpMyAdmin\\SqlParser\\Parser;\nuse PhpMyAdmin\\SqlParser\\Utils\\Query;\n\n$query = 'OPTIMIZE TABLE tbl';\n$parser = new Parser($query);\n$flags = Query::getFlags($parser-\u003estatements[0]);\n\necho $flags-\u003equeryType?-\u003evalue;\n```\n\n### Parsing and building SQL query\n\n```php\nrequire __DIR__ . '/vendor/autoload.php';\n\n$query1 = 'select * from a';\n$parser = new PhpMyAdmin\\SqlParser\\Parser($query1);\n\n// inspect query\nvar_dump($parser-\u003estatements[0]); // outputs object(PhpMyAdmin\\SqlParser\\Statements\\SelectStatement)\n\n// modify query by replacing table a with table b\n$table2 = new \\PhpMyAdmin\\SqlParser\\Components\\Expression('', 'b', '', '');\n$parser-\u003estatements[0]-\u003efrom[0] = $table2;\n\n// build query again from an array of object(PhpMyAdmin\\SqlParser\\Statements\\SelectStatement) to a string\n$statement = $parser-\u003estatements[0];\n$query2 = $statement-\u003ebuild();\nvar_dump($query2); // outputs string(19) 'SELECT  * FROM `b` '\n\n// Change SQL mode\nPhpMyAdmin\\SqlParser\\Context::setMode(PhpMyAdmin\\SqlParser\\Context::SQL_MODE_ANSI_QUOTES);\n\n// build the query again using different quotes\n$query2 = $statement-\u003ebuild();\nvar_dump($query2); // outputs string(19) 'SELECT  * FROM \"b\" '\n```\n\n## Localization\n\nYou can localize error messages installing `phpmyadmin/motranslator` version `5.0` or newer:\n\n```sh\ncomposer require phpmyadmin/motranslator:^5.0\n```\n\nThe locale is automatically detected from your environment, you can also set a different locale\n\n**From cli**:\n\n```sh\nLC_ALL=pl ./vendor/bin/sql-parser --lint --query \"SELECT 1\"\n```\n\n**From php**:\n\n```php\nrequire __DIR__ . '/vendor/autoload.php';\n\nPhpMyAdmin\\SqlParser\\Translator::setLocale('pl');\n\n$query1 = 'select * from a';\n$parser = new PhpMyAdmin\\SqlParser\\Parser($query1);\n```\n\n## More information\n\nThis library was originally created during the Google Summer of Code 2015 and has been used by phpMyAdmin since version 4.5.\n\n[1]:https://getcomposer.org/\n","funding_links":["https://www.phpmyadmin.net/donate/"],"categories":["类库"],"sub_categories":["数据库"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpmyadmin%2Fsql-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphpmyadmin%2Fsql-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpmyadmin%2Fsql-parser/lists"}