php - 解析sql查询PHP

标签 php sql parsing

<分区>

我想将 SQL 查询解析为一个数组。我无法理解代码。

例子:

$sql_query = "SELECT id, login, pass FROM users WHERE id=3, login=faforty ORDER DESC LIMIT 3"';

并且此 sql 查询应如下所示:

$data = array();
$data['select'] = array('id', 'login', 'pass');
$data['from'] = array('id' => 3, 'login' => 'faforty');
$data['order'] = 'desc';
$data['limit'] = 3;

查询可能不同。

最佳答案

使用 SQL 解析器。 http://code.google.com/p/php-sql-parser/

this example复制粘贴:

<?php
  require_once('php-sql-parser.php');
  $parser=new PHPSQLParser('SELECT a FROM some_table an_alias WHERE d > 5;', true);

  print_r($parser->parsed);  

示例输出:

Array
(
    [SELECT] => Array
        (
            [0] => Array
                (
                    [expr_type] => colref
                    [alias] => 
                    [base_expr] => a
                    [sub_tree] => 
                    [position] => 8
                )

        )

    [FROM] => Array
        (
            [0] => Array
                (
                    [expr_type] => table
                    [table] => some_table
                    [alias] => Array
                        (
                            [as] => 
                            [name] => an_alias
                            [base_expr] => an_alias
                            [position] => 29
                        )

                    [join_type] => JOIN
                    [ref_type] => 
                    [ref_clause] => 
                    [base_expr] => some_table an_alias
                    [sub_tree] => 
                    [position] => 18
                )

        )

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

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

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

        )

)

关于php - 解析sql查询PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051711/

相关文章:

php - 为什么使用 Spry 菜单会杀死我的 <p> 标签?

php - 此 React 应用程序中的实际数据和演示数据不同

php - 具有唯一值 PHP 的 MySQL 回显组

python - 使用ElementTree逐一解析目录下的所有xml文件

parsing - RTP H.264 数据包解包器

php - 通过 Payum + OmnipayBridge 在 Sylius 中使用 Omnipay 网关

mysql - 如何与另一个有计数的表连接?

php - 如何通过mysql查询插入包含逗号的字符串?

mysql - SQL - 获取消息列表以及计数值

parsing - 如何仅使用 ctags 获取函数