我想创建一个数据库恢复功能,该功能将解析使用 phpMyAdmin 制作的转储并执行所有查询。
我已经有一个执行查询的 MySQL 类,但它只知道如何执行单个查询。我正在寻找一种将文件内容拆分为单个查询的方法。
我试图玩 preg_split ......但没有设法让它工作。
$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
我不太擅长正则表达式。有没有办法可以实现我的目标?
我想创建一个数据库恢复功能,该功能将解析使用 phpMyAdmin 制作的转储并执行所有查询。
我已经有一个执行查询的 MySQL 类,但它只知道如何执行单个查询。我正在寻找一种将文件内容拆分为单个查询的方法。
我试图玩 preg_split ......但没有设法让它工作。
$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
我不太擅长正则表达式。有没有办法可以实现我的目标?
不要尝试用正则表达式解析 sql。如果;
sql 字符串中有某个地方怎么办?
我会尝试http://pear.php.net/package/SQL_Parser或任何其他 php mysql 解析器。另请参阅SO 上的PHP MySQL SQL 解析器(插入和更新)。
最终我设法找到了正确的正则表达式:
$queries = preg_split('/[.+;][\s]*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
它在 ; 之后拆分查询 签名并且即使查询分布在多行或查询包含也不会中断;因为它在一行的末尾寻找它。
我认为当您在 $content.