Cuando usas fetch_all(MYSQLI_ASSOC) obtienes un array con los nombres de campo como índices, pero con fetch_array() los índices son la posición de cada campo en la tabla, más o menos algo como: 
  
Código:
 Campo			Assoc			Array
-------------------	----------------	--------------------
id			id			0
nombre			nombre			1
caratula		caratula		2
otro_campo		otro_campo		3
etc			etc			4
  No veo la necesidad o conveniencia de cambiar la forma de leer la consulta, pero, si lo haces, entonces cambia también la forma de acceder a los campos.