is this transaction reliable and efficient in real world use professionallly
DROP PROCEDURE IF EXISTS sp_addnewstratplandetails $$
CREATE PROCEDURE sp_addnewstratplandetails(IN in_stratprio_id int,IN in_Plalt varchar(255),in in_Out varchar(255),in in_Actes varchar(255),in in_performars varchar(255),in in_tar varchar(255),in in_state int)
MODIFIES SQL DATA
BEGIN
DECLARE Result1 int;
DECLARE pcnt1 int;
DECLARE o_id varchar(255);DECLARE in_Outrids varchar(255);
DECLARE in_actids varchar(255);DECLARE in_pids varchar(255);
DECLARE r_id varchar(255);
DECLARE in_PLANrids varchar(255);
DECLARE pcnt int;
DECLARE a_id varchar(255);
DECLARE pcntI int;
DECLARE p_id varchar(255);DECLARE in_tids varchar(255);
DECLARE pcntt int;
DECLARE pchk int;
DECLARE lo_id int;
DECLARE l_AO_id int;
DECLARE l_perfo_id int;
DECLARE l_tar_id int;
DECLARE t_id varchar(255);
DECLARE in_Pllt_id varchar(20);

DECLARE l_out_id varchar(20);
DECLARE l_Actes_id varchar(20);
DECLARE l_pers_id varchar(20);
DECLARE l_tar_id varchar(20);
DECLARE exit handler for sqlexception
BEGIN
/* ERROR*/

ROLLBACK;
SELECT CONCAT('Error occurred Record not saved!')as "Result";
END;

DECLARE exit handler for sqlwarning
BEGIN
/* WARNING*/
ROLLBACK;
SELECT CONCAT('Error:Record not saved already Exists! ') as "Result";
END;

START TRANSACTION;
/*check if planned result exists*
SELECT count(*) into Result1 FROM _Plantstbl WHERE Plannult=in_Plalt and EXISTS (SELECT * FROM _stratbl WHERE _Plantstbl.PlannedResult_id=_stratbl.Plannult_id and stratprio_id=in_stratprio_id);
IF Result1=0 && in_state=0 THEN
SELECT count(*) into pcnt from _Plantstbl where Plannult_id like concat(in_stratprio_id,'%');
SET r_id=pcnt+1;
SET in_PLANrids=concat(in_stratprio_id,'.',r_id);
INSERT INTO _Plantstbl(Plannult_id,Plannsult) VALUES(in_PLANrids,in_Plalt);
ELSE
UPDATE _Plantstbl SET Plannsult=in_Plalt WHERE PlannedResult=in_Plalt;
END IF;
SELECT Plannult_id into in_Pllt_id FROM _Plantstbl WHERE Plannsult=in_Plalt ;

SELECT count(*) into lo_id FROM Out_tbl WHERE outcome=in_Out ;
IF lo_id=0 THEN

SELECT count(*) into pcnt1 from Out_tbl where out_id like concat(in_Pllt_id,'.','%');
SET o_id=pcnt1+1;
SET in_Outrids=concat(in_Pllt_id,'.',o_id);
INSERT INTO Out_tbl(out_id,outme) VALUES(in_Outrids,in_Out);

ELSE
/* ROLLBACK TO savepoint_tfer;
SELECT CONCAT('Saving record aborted! outcome "',in_Out,'" already exists');*
UPDATE Out_tbl SET outcome=in_Out WHERE outcome=in_Out ;
END IF;
SELECT count(*) into l_AO_id FROM _Plastbl WHERE Actes=in_Actes;
IF l_AO_id=0 THEN
SELECT out_id into l_out_id FROM Out_tbl WHERE outcome=in_Out ;
SELECT count(*) into pcnt from _Plastbl where Actes_id like concat(l_out_id,'.','%');
SET a_id=pcnt+1;
SET in_actids=concat(l_out_id,'.',a_id);
INSERT INTO _Plastbl(Actes_id,Actes) VALUES(in_actids,in_Actes);
ELSE
UPDATE _Plastbl SET Actes=in_Actes WHERE Actes=in_Actes ;
/* ROLLBACK TO savepoint_tfer;
SELECT CONCAT('Saving record aborted Activity "',in_Actes,'" already Exists! ');*
END IF;
SELECT count(*) into l_perfo_id FROM _Pertbl WHERE perfors=in_performars;
IF l_perfo_id=0 THEN


SELECT count(*) into pcntI from _Pertbl where Pind_id like concat(l_out_id,'.','%');
SET p_id=pcntI+1;
SET in_pids=concat(l_out_id,'.',p_id);
INSERT INTO _Pertbl(Pind_id,perfors) VALUES(in_pids,in_performars);
ELSE
UPDATE _Pertbl SET perfors=in_performars WHERE perfors=in_performars;
/* ROLLBACK TO savepoint_tfer;
SELECT CONCAT('Saving record aborted performanceIndicator "',in_performars,'" already Exists! ');*
END IF;
SELECT count(*) into l_tar_id FROM _Ttbl WHERE tar=in_tar;
IF l_tar_id=0 THEN

SELECT count(*) into pcntt from _Ttbl where tar_id like concat(l_out_id,'.','%');
SET t_id=pcntt+1;
SET in_tids=concat(l_out_id,'.',t_id);
INSERT INTO _Ttbl(tar_id,tar) VALUES(in_tids,in_tar);
ELSE
UPDATE _Ttbl SET tar=in_tar WHERE tar=in_tar;
/* ROLLBACK TO savepoint_tfer;
SELECT CONCAT('Saving record aborted tar "',in_tar,'" already Exists! ');**
END IF;

COMMIT;
SELECT Actes_id into l_Actes_id FROM _Plastbl WHERE Actes=in_Actes;
SELECT Pind_id into l_pers_id FROM _Pertbl WHERE perfors=in_performars;
SELECT tar_id into l_tar_id FROM _Ttbl WHERE tar=in_tar;

INSERT INTO _stratbl(stratprio_id,Plesult_id,out_id,Actes_id,P ind_id,tar_id ) VALUES(in_stratprio_id,in_Pllt_id,l_out_id,l_Actes _id,l_pers_id ,l_tar_id);
SELECT 'success ';


END$$
DELIMITER ;

and how best can i execute it in php to enter the data in this array :
Array
(
[Japanese] => Array
(
[hot] => wasabi
[salty] => soy sauce
[sweety] => soy rdsauce
[bitter] => pepper sauce
)

[Chinese] => Array
(
[hot] => wasabi
[salty] => soy sauce
[sweety] => soy rdsauce_one
[bitter] => pepper sauce3
)

[indian] => Array
(
[hot] => wasabi
[salty] => soy sauce
[sweety] => soy rdsauce
[bitter] => pepper sauce4
)

[mexican] => Array
(
[hot] => soanzo
[salty] => soy sauce1
[sweety] => soy sauceeur
[bitter] => pepper sauce_sausage
)

[russian] => Array
(
[hot] => soanzo
[salty] => soy sauce1
[sweety] => soy sauceeur
[bitter] => pepper sauce_pork

)

[ganda] => Array
(
[hot] => soanzo
[salty] => soy sauce1
[sweety] => soy sauce_beef
[bitter] => luwombo_chicken

)

)