I have an array as follows:
$sql_commands_to_run= Array
(
[0] => ALTER TABLE `live`.`master_table3`]} {[ADD COLUMN `con` varchar(25) NULL;
[1] => ALTER TABLE `live`.`master_table_2`]} {[MODIFY COLUMN `mobile2` varchar(15), ADD UNIQUE(`mobile2`);
[2] => ALTER TABLE `live`.`master_table_2`]} {[MODIFY `type2` varchar(10) NOT NULL;
[3] => ALTER TABLE `live`.`master_table_2`]} {[MODIFY COLUMN `type2` varchar(10);
[4] => ALTER TABLE `live`.`master_table_2`]} {[ADD COLUMN `email2` varchar(255);
)
I want to merge the multiple alter queries into one query per table
Array
(
[0] => ALTER TABLE `live`.`master_table3` ADD COLUMN `con` varchar(25) NULL;
[1] => ALTER TABLE `live`.`master_table_2` MODIFY COLUMN `mobile2` varchar(15), ADD UNIQUE(`mobile2`),MODIFY `type2` varchar(10) NOT NULL,MODIFY COLUMN `type2` varchar(10),ADD COLUMN `email2` varchar(255);
)
for that to happen I am trying to separate the table names with the modifications
Array(
['ALTER TABLE `live`.`master_table3`'] => Array(
[0] => 'ADD COLUMN `con` varchar(25) NULL'
),
['ALTER TABLE `live`.`master_table_2`'] => Array(
[0] => 'MODIFY COLUMN `mobile2` varchar(15)',
[1] => 'ADD UNIQUE(`mobile2`)',
[2] => 'MODIFY `type2` varchar(10) NOT NULL',
[3] => 'MODIFY COLUMN `type2` varchar(10)',
[4] => 'ADD COLUMN `email2` varchar(255)'
)
)
here is what I am trying :
$merger = array();
foreach($sql_commands_to_run as $sql_command){
$temp_arr = explode("]} {[",$sql_command);
array_push($merger["'".$temp_arr[0]."'"],$temp_arr[1]);
}
but I'm not good at arrays. Please, any help would be appreciated.
$merger[$temp_arr[0]][] = $temp_arr[1];instead array_push$sql_commands_to_runis far from ideal. Where does$sql_commands_to_runcome from? Show us the code pleasestr_replace(']} {[', ' ', $sql_commands_to_run)? Oh I see, you want 1 query per table.