fork download
  1. <?php
  2.  
  3. $multiSql = "
  4. ALTER TABLE `my_table` CHANGE `typ` `typ` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0=none; 1=test1; 2=test2; 3=test3';
  5.  
  6. ALTER TABLE `my_table2`
  7. ADD `date` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `test`;
  8.  
  9. ALTER TABLE `my_table3` ADD `date` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `test`; ALTER TABLE `my_table3` ADD `test2` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `date`;
  10.  
  11. ALTER TABLE `my_table3` CHANGE `test2` `test2` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0=test; 1=test2;';
  12. ";
  13.  
  14. $sqlArray = preg_split('~\([^)]*\)(*SKIP)(*FAIL)(*F)|(?<=;)(?![ ]*$)~', trim($multiSql), -1, PREG_SPLIT_NO_EMPTY);
  15.  
  16. print_r($sqlArray);
  17.  
Success #stdin #stdout 0.02s 25900KB
stdin
Standard input is empty
stdout
Array
(
    [0] => ALTER TABLE `my_table` CHANGE `typ` `typ` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0=none;
    [1] =>  1=test1;
    [2] =>  2=test2;
    [3] =>  3=test3';
    [4] => 

ALTER TABLE `my_table2`
  ADD `date` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `test`;
    [5] => 

ALTER TABLE `my_table3` ADD `date` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `test`;
    [6] =>  ALTER TABLE `my_table3` ADD `test2` varchar(25) COLLATE utf8_czech_ci DEFAULT NULL AFTER `date`;
    [7] => 

ALTER TABLE `my_table3` CHANGE `test2` `test2` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0=test;
    [8] =>  1=test2;
    [9] => ';
)