Porque el campo denominado `cuatrimestre` en esa tabla es un campo de tipo VARCHAR o CHAR, por tanto la comparación debe ser realizada contra una cadena de texto; como las cadenas de texto sólo se pueden poner entre apóstrofes, la sentencia una vez construida,
dentro de la variable, debe quedar así:
En el segundo ejemplo, estás omitiendo los apóstrofes que deben encerrar el contenido de la variable
$cuatrimestre, entonces, suponiendo que contenga "segundo", la sentencia, una vez creada dice:
En ese contexto,
segundo no es una cadena de texto, sino que el parser lo interpreta como el nombre de un objeto de base de datos, tal como un columna, una tabla o algo así.
Conclusión: corrige tu PHP para que esté escrito algo así:
Código PHP:
Ver original$recorro="SELECT * FROM detallehorario WHERE idaula=$idaula AND cuatrimestre= '$cuatrimestre'";
de modo que cuando quede armada, la sentencia tenga el valor de la variable contenido entre apostrofes.
Tip final: DEben quedar entre apóstrofes todos los valores de cadenas de caracteres, fechas, horas y fechahoras. No los valores numéricos, que se interpretan como tales perfectamente.