Mensaje de error Codeigniter No se puede modificar la información del encabezado

Recibí este mensaje de error cuando ejecuté mi proyecto PHP CodeIgniter:

Se ha encontrado un error PHP

Severidad: Advertencia

Mensaje: No se puede modificar la información del encabezado: los encabezados ya enviados por (salida iniciada en C: \ AppServ \ www \ tree \ application \ models \ mtree.php: 17)

Nombre de archivo: core / Common.php

Número de línea: 442

línea 17:

echo $row->members_id . "
";

esta es mi función de modelo:

 function convert_all() { $this->db->empty_table('table1'); $this->db->empty_table('table2'); $this->db->query("INSERT INTO `table1` (`members_id`, `members_username`); $query = $this->db->get('table2'); foreach ($query->result() as $row) { if ($row->members_id > 1) { echo $row->members_id . "
"; } if ($this->isadvanced($row->members_id, $row->members_direct_id)) { $this->insert_to_right($row, $row->members_direct_id); } else { $this->insert_to_left($row, $row->members_direct_id); } } }

Mientras usa codeigniter, es mejor que haga echo solo en las vistas.

Hacer eco en cualquier lugar envía al azar algunos datos al navegador, después de lo cual no puede modificar los encabezados (esto incluye el bash de redireccionar, establecer el tipo de contenido, etc.)

Debe reorganizar su código, de manera que, el echo se realice solo en las vistas. Esto resolverá sus problemas de encabezado en Codeigniter.

Esto también incluye espacios en blanco adicionales al final después de la llave de cierre ” } ?> ” En archivos php sin vista.

No puede mostrar nada antes de que se llame a la función de encabezado. No debe mostrar ningún modelo o controlador de forma para evitar este tipo de error. Si desea mostrar algo desde el controlador o modelo, debe almacenar la salida en el búfer en lugar de enviarlo al navegador. Puede almacenar la salida en el búfer utilizando la función ob_start() antes de ob_start() función header() . Entonces puedes hacer algo como esto

 if(true) { header("Location:http://google.com"); } else { ob_end_flush(); } 

este fue tu problema – echo $ row-> members_id. “”; – como dicen las respuestas anteriores, no haga eco de algo en sus controladores, presione para hacerlo en las vistas – siempre

Creo que será útil Use $config['sess_save_path'] = sys_get_temp_dir(); en lugar de $config['sess_save_path'] = NULL; en su Application/config/config.php