views:

604

answers:

2

I want to make a database restore function that will parse a dump made with Php My Admin and will do the queries.

I have already a mysql class that does the query, but it only knows to do a single query. So i am looking of a way to split the file content into single queries.

I tried to play with preg_split ... but didn't managed to get it to work

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

unfortunately i am not very good with regular expression :( thanks for your help.

+5  A: 

don't try to parse sql with regular expressions. what if there is a ; somewhere inside a sql string?

i would try http://pear.php.net/package/SQL_Parser, or any of the other php mysql parsers out there. see also PHP MySQL SQL parser (INSERT and UPDATE) here on SO.

ax
A: 

Eventually i managed to find the right regex:

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

it splits the query after the ; sign and does not break even if the querry spreads on multiple rows or the query contains ; since it looks for it at the end of a line.

solomongaby