greenlion/php-sql-parser

一个专注于MySQL方言的纯PHP SQL(非验证)解析器

v4.6.0 2023-03-09 20:54 UTC

README

Build Status

PHP-SQL-Parser

一个专注于MySQL方言的纯PHP SQL(非验证)解析器

下载

GitHub Wiki

以下语句类型的MySQL方言完全支持

SELECT
INSERT
UPDATE
DELETE
REPLACE
RENAME
SHOW
SET
DROP
CREATE INDEX
CREATE TABLE
EXPLAIN
DESCRIBE

其他SQL语句类型

其他语句作为标记数组返回。这不如上述类型的信息结构化。有关更多信息,请参阅解析器手册

其他SQL方言

由于MySQL SQL方言非常接近SQL-92,因此它应该适用于大多数需要SQL解析器的数据库应用程序。如果使用其他数据库方言,则可能需要更改保留字 - 请参阅解析器手册。它支持UNION,子查询和复合语句。

外部依赖

解析器是一个自包含的类。它没有外部依赖。解析器使用少量正则表达式。

重点

解析器的重点是完整和准确地支持MySQL SQL方言。重点不在于优化性能。预期您将提供语法上有效的查询。

手册

解析器手册 - 查看手册。

示例输出

示例查询

SELECT STRAIGHT_JOIN a, b, c 
  FROM some_table an_alias
 WHERE d > 5;

示例输出(通过print_r)

Array
( 
    [OPTIONS] => Array
        (
            [0] => STRAIGHT_JOIN
        )       
        
    [SELECT] => Array
        (
            [0] => Array
                (
                    [expr_type] => colref
                    [base_expr] => a
                    [sub_tree] => 
                    [alias] => `a`
                )

            [1] => Array
                (
                    [expr_type] => colref
                    [base_expr] => b
                    [sub_tree] => 
                    [alias] => `b`
                )

            [2] => Array
                (
                    [expr_type] => colref
                    [base_expr] => c
                    [sub_tree] => 
                    [alias] => `c`
                )

        )

    [FROM] => Array
        (
            [0] => Array
                (
                    [table] => some_table
                    [alias] => an_alias
                    [join_type] => JOIN
                    [ref_type] => 
                    [ref_clause] => 
                    [base_expr] => 
                    [sub_tree] => 
                )

        )

    [WHERE] => Array
        (
            [0] => Array
                (
                    [expr_type] => colref
                    [base_expr] => d
                    [sub_tree] => 
                )

            [1] => Array
                (
                    [expr_type] => operator
                    [base_expr] => >
                    [sub_tree] => 
                )

            [2] => Array
                (
                    [expr_type] => const
                    [base_expr] => 5
                    [sub_tree] => 
                )

        )

)