当我运行我的php CodeIgniter项目时,我收到此错误消息:
遇到PHP错误
严重性:警告
消息:无法修改标头信息 - 已发送的标头 (输出始于 C:\的appserv \ WWW \树\应用\模型\ mtree.php:17)
文件名:core / Common.php
行号:442
第17行:
echo $row->members_id . "</br>";
这是我的模特功能:
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 . "</br>";
}
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);
}
}
}
答案 0 :(得分:10)
使用codeigniter时,最好只建议echo
只在视图中使用。
随时随地回送一些数据到浏览器,之后你无法修改标题(这包括尝试重定向,设置内容类型等)
您应该重新组织代码,以便echo
仅在视图中完成。这将解决Codeigniter中的标题问题。
在非视图php文件中,在结束括号“} ?>
”之后,这还包括额外的空格。
答案 1 :(得分:1)
在调用标题函数之前,您无法显示任何内容。您不应该在模型或控制器上显示任何内容以避免此类错误。如果要从控制器或模型中显示某些内容,则应将输出存储到缓冲区而不是将其发送到浏览器。在调用ob_start()
函数之前,可以使用header()
函数将输出存储到缓冲区。然后你可以做这样的事情
if(true)
{
header("Location:http://google.com");
}
else
{
ob_end_flush();
}
答案 2 :(得分:0)
这是你的问题 - echo $ row-&gt; members_id。 “”; - 正如上面的答案所说,不要在你的控制器中回应一些东西,推动在视图中做 - 总是
答案 3 :(得分:0)
我认为这会有所帮助
在$config['sess_save_path'] = sys_get_temp_dir();
文件中使用$config['sess_save_path'] = NULL;
代替Application/config/config.php