Es exactamente por la misma razón de que no sabes como funciona foreach() sobre las variable que utilizas, aún así sigues haciendo mal las cosas.
¿Qué es lo que pretendes hacer con foreach()?
Además entiende que estás comparando $q contra la clave (el nombre de la columna) y no contra el valor.
Porque entiende que así como lo haces solo iteras un registro a la vez, es decir, un array clave-valor sencillo y no una lista de ellos.
Explica bien lo que pretendes ya que de otra forma lamento decir que sólo tu sabes lo que haces, pues lo has programado así, entonces asumo que sabes perfectamente lo que estás haciendo.