phpmyadmin / sql-parser
一个专注于MySQL语法的验证SQL词法分析和解析器。
5.10.0
2024-08-29 20:56 UTC
Requires
- php: ^7.2 || ^8.0
- symfony/polyfill-mbstring: ^1.3
- symfony/polyfill-php80: ^1.16
Requires (Dev)
- phpbench/phpbench: ^1.1
- phpmyadmin/coding-standard: ^3.0
- phpmyadmin/motranslator: ^4.0 || ^5.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.9.12
- phpstan/phpstan-phpunit: ^1.3.3
- phpunit/phpunit: ^8.5 || ^9.6
- psalm/plugin-phpunit: ^0.16.1
- vimeo/psalm: ^4.11
- zumba/json-serializer: ~3.0.2
Suggests
- ext-mbstring: For best performance
- phpmyadmin/motranslator: Translate messages to your favorite locale
Conflicts
- phpmyadmin/motranslator: <3.0
- dev-master / 6.0.x-dev
- 5.11.x-dev
- 5.10.x-dev
- 5.10.0
- 5.9.x-dev
- 5.9.1
- 5.9.0
- 5.8.x-dev
- 5.8.2
- 5.8.1
- 5.8.0
- 5.7.0
- 5.6.0
- 5.5.0
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.1
- 5.3.0
- 5.2.0
- 5.1.0
- 5.0.0
- 4.7.x-dev
- 4.7.3
- 4.7.2
- 4.7.1
- 4.7.0
- 4.6.1
- 4.6.0
- 4.5.0
- 4.4.0
- 4.3.2
- v4.3.1
- v4.3.0
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.10
- v4.1.9
- v4.1.8
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.1
- v4.0.0
- v3.4.17
- v3.4.16
- v3.4.15
- v3.4.14
- v3.4.13
- v3.4.12
- v3.4.11
- v3.4.10
- v3.4.9
- v3.4.8
- v3.4.7
- v3.4.6
- v3.4.5
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.0
This package is auto-updated.
Last update: 2024-09-19 23:38:52 UTC
README
一个专注于MySQL语法的验证SQL词法分析和解析器。
代码状态
安装
请使用 Composer 进行安装
composer require phpmyadmin/sql-parser
文档
API 文档可在 https://develdocs.phpmyadmin.net/sql-parser/ 查找。
使用方法
命令行工具
用于语法高亮SQL查询的命令行工具
./vendor/bin/highlight-query --query "SELECT 1"
用于检查SQL查询错误的命令行工具
./vendor/bin/lint-query --query "SELECT 1"
用于标记SQL查询的命令行工具
./vendor/bin/tokenize-query --query "SELECT 1"
所有命令都可以从stdin(标准输入)解析输入,例如
echo "SELECT 1" | ./vendor/bin/highlight-query cat example.sql | ./vendor/bin/lint-query
格式化SQL查询
echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, ['type' => 'html']);
发现查询类型
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;
解析和构建SQL查询
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" '
本地化
您可以通过安装 phpmyadmin/motranslator
版本 5.0
或更高版本来本地化错误消息
composer require phpmyadmin/motranslator:^5.0
区域设置会自动从您的环境中检测到,您也可以设置不同的区域设置
从命令行:
LC_ALL=pl ./vendor/bin/lint-query --query "SELECT 1"
从PHP:
require __DIR__ . '/vendor/autoload.php'; $GLOBALS['lang'] = 'pl'; $query1 = 'select * from a'; $parser = new PhpMyAdmin\SqlParser\Parser($query1);
更多信息
此库最初是在2015年Google Summer of Code期间创建的,并自phpMyAdmin版本4.5以来一直被使用。