michabbb/php-sql-parser

greenlion/php-sql-parser 的分支 - 一个专注于MySQL方言的纯PHP SQL(非验证)解析器

v4.0.0 2014-04-16 10:03 UTC

This package is auto-updated.

Last update: 2024-09-24 06:06:19 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] => 
                )

        )

)