Mejor volvamos al principio ya que veo que el problema es el LENGHT, que con mi código es más difícil de implementar.
Prueba este código:
Código PHP:
IF telefonos > 0 THEN
WHILE LENGTH(telefonos) > 0 DO
SET tfno = SUBSTRING_INDEX(telefonos, ',', 1);
SET codfono = SUBSTRING_INDEX(tfno, '-', 1);
SET fono = SUBSTRING_INDEX(tfno, '-', -1);
SET telefonos = SUBSTR(telefonos, LENGTH(tfno)+2);
INSERT INTO t_telefonocelularfax(idpersona, codarea,numero, idtipotelefonocelular)
VALUES(ultimoidpersona,codfono,fono,1);
END WHILE;