Bueno, es en esencia el mismo problema... Sólo que no lo estás infieriendo.
Si COD_MATER es un VARCHAR, para que el WHERE funcione debe compararse con una cadena, y eso no es lo que estás haciendo cuando lo que hay en la variable
$cod es a0001.
Tal y como la usas, la consulta, si el valor es el "a0001", quedaría:
Donde "a0001" es interpretado como nombre de campo, por la simple razón de que comienza con una letra. Si lo que pones es "0001" lo interpreta bien porque lo interpreta como un uno (1) y hace la conversión implícita.
Lo que debe quedar en la consulta es:
Esto sí compara una cadena con un VARCHAR.
¿Se entiende la diferencia?
Con lo que te comentaba en el primer post podrías haberlo inferido:
Cita: MySQL asume que a0001 es un nombre de columna, pero no una cadena. En esos caso tienes que ponerlo si o si entre apóstrofes pues no existe conversión implícita para esos casos.
Esto se da
siempre... no solamente en un INSERT.