2011-02-25 57 views
1

我有這樣的代碼在我的模型類:我的PHP代碼中的荒謬錯誤!

public function insertPage($owner, $fbPageId = null) { 
    echo '<pre> insertPage called </pre>'; 

    $owner = mysql_escape_string($owner); 
    if (!is_null($fbPageId)) { 
     echo '<pre> fbPageId is set </pre>'; 

     $query = $this->sqlConn->query("INSERT INTO pages XXX"); 
    } else { 
     echo '<pre> fbPageId is not set </pre>'; 
     //die('Dummy die()'); 
     $query = $this->sqlConn->query("INSERT INTO pages XXX"); 
    } 

    return $query; 
} 

注意樣品芯片(),因爲它是重要的!) 然後在我的控制器下面的代碼:

if (isset($_POST['fbPageId'])) { 
     echo '<pre> fbPageId is set </pre>'; 
     if (!($page = $this->model->pageExists($_POST['fbPageId']))) { // checks if page exists in db 
      echo '<pre> page does not exist </pre>'; 
      if (!($this->model->insertPage($_SESSION['uid'], $_POST['fbPageId']))) { 
       die('Error on INSERT'); 
      } else { 
       echo '<pre> page entered correctly </pre>'; 
      } 
      $pageId = $this->model->lastInsertId(); 
     } else { // page does exist 
      echo '<pre> page does exist </pre>'; 
      // some other stuff 
     } 
    } 

現在:當控制器被執行時,我得到這個輸出(在一張空的桌子上):

fbPageId is set 
page does not exist 
insertPage called 
    fbPageId is set 
page entered correctly 

這正是我所期望的,但是當我檢入數據庫而不是僅包含pageId,facebookId和owner(這些是字段)的行時,我得到三行!其中一個正確填寫了facebookId,其他人有一個NULL值(我承認在我的表中)。

正如你所看到的,我在insertPage()的開頭放置了一個echo語句,所以每次調用時都會顯示一些東西,但字符串「insertPage called」只顯示一次。 此外,如果我取消註釋「Dummy die()」行,我只在表格中獲得一行,但在它永遠不會執行之前使用echo語句!

我嚇壞了試圖解決這個問題。

+7

有沒有荒謬的錯誤,只有荒謬的代碼這樣的事情。 – jondavidjohn 2011-02-25 19:16:27

+1

如果我的代碼荒謬,我真的很樂意改變它。我是MVC框架的新手,所以我不知道我做了什麼是不好的。這是一個普遍的事情,還是你特別提到我的代碼?我在這裏改進:) – 2011-02-25 19:31:28

+0

我不確定我是否能夠從輸出中獲得大膽的位置 - 第一個分支運行 - 所以即使未註釋*,模塊上方的echo語句也不會執行。如果只有第一個分支在代碼中會發生什麼? (評論整個第二)。在這兩種情況下,「XXX」部件是否正確? – 2011-02-25 19:56:03

回答

0

那麼在什麼問題?
也許你必須試着在flush()後回聲?