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語句!
我嚇壞了試圖解決這個問題。
有沒有荒謬的錯誤,只有荒謬的代碼這樣的事情。 – jondavidjohn 2011-02-25 19:16:27
如果我的代碼荒謬,我真的很樂意改變它。我是MVC框架的新手,所以我不知道我做了什麼是不好的。這是一個普遍的事情,還是你特別提到我的代碼?我在這裏改進:) – 2011-02-25 19:31:28
我不確定我是否能夠從輸出中獲得大膽的位置 - 第一個分支運行 - 所以即使未註釋*,模塊上方的echo語句也不會執行。如果只有第一個分支在代碼中會發生什麼? (評論整個第二)。在這兩種情況下,「XXX」部件是否正確? – 2011-02-25 19:56:03