0

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

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

我试图玩 preg_split ......但没有设法让它工作。

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

我不太擅长正则表达式。有没有办法可以实现我的目标?

4

3 回答 3

5

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

我会尝试http://pear.php.net/package/SQL_Parser或任何其他 php mysql 解析器。另请参阅SO 上的PHP MySQL SQL 解析器(插入和更新)

于 2009-03-27T11:02:46.800 回答
0

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

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

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

于 2009-03-27T12:04:45.077 回答
0

我认为当您在 $content.

于 2012-01-11T07:58:19.340 回答