【问题标题】:mysql split multiquery string with phpmysql用php拆分多查询字符串
【发布时间】:2009-03-27 10:40:54
【问题描述】:

我想创建一个数据库恢复功能,该功能将解析使用 phpMyAdmin 生成的转储并执行所有查询。

我已经有一个执行查询的 MySQL 类,但它只知道如何执行单个查询。我正在寻找一种将文件内容拆分为单个查询的方法。

我尝试过使用 preg_split ...但没能成功。

$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);

我不太擅长正则表达式。有什么方法可以实现我的目标吗?

【问题讨论】:

    标签: php mysql multi-query


    【解决方案1】:

    不要尝试用正则表达式解析 sql。如果 sql 字符串中某处有 ; 怎么办?

    我会尝试http://pear.php.net/package/SQL_Parser,或任何other php mysql parsers。在 SO 上另见PHP MySQL SQL parser (INSERT and UPDATE)

    【讨论】:

      【解决方案2】:

      我认为当您在 $content 中有存储过程、函数或触发器时,在上面的 cmets 中拆分会产生错误的字符串。

      【讨论】:

        【解决方案3】:

        最终我找到了正确的正则表达式:

        $queries = preg_split('/[.+;][\s]*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
        

        它在 ; 之后拆分查询签名并且即使查询分布在多行或查询包含也不会中断;因为它在一行的末尾寻找它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-27
          • 2015-08-24
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 2011-04-24
          相关资源
          最近更新 更多