$arr1 = array(1,2,4,5,7);
$arr2 = range(1,max($arr1));
$missing = array_diff($arr2,$arr1); // (3,6)
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `sync_fl`()
BEGIN
DECLARE exit handler for sqlexception
BEGIN
-- ERROR
ROLLBACK;
END;
DECLARE exit handler for sqlwarning
BEGIN
-- WARNING
ROLLBACK;
END;
START TRANSACTION;
CREATE DEFINER=`root`@`%` PROCEDURE `sync_fl`()
BEGIN
DROP TABLE IF EXISTS `sh_prod_im__`;
ALTER TABLE `sh_prod_im` RENAME TO `sh_prod_im__`;
ALTER TABLE `sh_prod_im_` RENAME TO `sh_prod_im`;
COMMIT;
END$$
DELIMITER ;
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `sync_fl2`()
BEGIN
DECLARE exit handler for sqlexception
BEGIN
-- ERROR
ROLLBACK;
END;
DECLARE exit handler for sqlwarning
BEGIN
-- WARNING
ROLLBACK;
END;
START TRANSACTION;
UPDATE `sh_prod_im` SET `updated` = 0;
INSERT INTO `sh_prod_im` (`prod`,`type`,`pict`)
SELECT `prod`,`type`,`pict`
FROM `sh_prod_im_`
FOR UPDATE
ON DUPLICATE KEY UPDATE `updated` = 1;
DELETE FROM `sh_prod_im` WHERE `updated` = 0;
COMMIT;
END$$
DELIMITER ;
SELECT * FROM `sh_prod_im` WHERE `prod` IN ('.implode(',',$prod_k).') ORDER BY `type`