2013-11-20 99 views
1

當我運行我的PHP CodeIgniter的項目中,我得到這個錯誤信息:笨錯誤信息不能更改頭信息

A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\tree\application\models\mtree.php:17)

Filename: core/Common.php

Line Number: 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); 
     } 
    } 
} 
+3

無關:您在本聲明結尾處缺少引號:* $ this-> db-> query(「INSERT INTO'table1'('members_id','members_username'); * –

+0

將某些內容發送到用戶**在調用**之前添加到'header'函數。您提供的代碼沒有提供足夠的信息來幫助調試。閱讀更多關於錯誤的信息:http://php.net/manual/en/function.header.php – adeelx

+0

看看這裏http://stackoverflow.com/questions/8028957/headers-al準備發送的PHP –

回答

10

使用codeigniter時,最好建議您只在視圖中使用echo

呼應隨時隨地隨機發送一些數據到瀏覽器,之後就不能修改標題(包括嘗試重定向,設置內容類型等)

你應該重新組織你的代碼,這樣, echo僅在視圖內完成。這將解決Codeigniter中的標題問題。

這還包括在非視圖php文件中的大括號「} ?>」後端的額外空格。

+0

是的,這個作品謝謝:-D – Cristiana214

+0

回聲只在視圖內。 +1 – rachitmanit

1

在調用標題函數之前,不能顯示任何東西。您不應該顯示任何表單模型或控制器以避免此類錯誤。如果要顯示控制器或模型的某些內容,則應將輸出存儲到緩衝區,而不是將其發送到瀏覽器。在調用header()函數之前,可以使用ob_start()函數將輸出存儲到緩衝區。然後你可以做這樣的事情

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

這是你的問題 - echo $ row-> members_id。 「」; - 如上述回答說,不迴應你的控制器的東西,推到這樣做的意見 - 始終

0

我認爲這將是有益的 使用​​而不是$config['sess_save_path'] = NULL;Application/config/config.php文件