Cita: pero recorriendo toda la tabla¿no deberia funcionar también?
hombre, podria hacerse funcionar, pero no seria demasiado óptimo..
Piensa que estas hacendo la comparación para todos y cada uno de los registros que tienes: habrá que coincidan, y otros no.
Es decir, si hay 100 registros en la db y ya existe la pieza en 1 registro, 99 veces se va a cumplir ($pieza2!=$pieza)' y 1 no, con lo que te va ha hacer 99 inserts.
Resumiendo: tu problema és: si no existe la pieza, inserta. Si no, no hagas nada. Y eso hace el código que te dejé.
Espero haberme explicado.
Salud!