2011-10-18 194 views
1

美好的一天。我正在嘗試爲我的系統創建任務跟蹤模塊。邏輯是,無論何時將任務分配給用戶,系統都會將任務更新爲「IsTaken」,這意味着特定用戶負責該任務。更新後,它會創建一個基本上將任務和用戶表連接在一起的「user_task」表。每當我將任務分配給某人時,它都沒問題。但是當我再次執行此操作時,以前的任務記錄的IsTaken字段將恢復爲0.我嘗試重新分配它,但同樣,前一個記錄還原。這很奇怪。我正在使用XAMPP,MySQL和PHP。我希望我不是唯一一個遇到這個問題的人。任何幫助將非常感激。上次更新的記錄在更新新記錄時恢復MySQL PHP

這裏是我的表:

CREATE TABLE IF NOT EXISTS `task` (
    `Task_No` int(11) NOT NULL AUTO_INCREMENT, 
    `Task_Name` varchar(100) NOT NULL, 
    `Task_Desc` varchar(450) DEFAULT NULL, 
    `Task_DateCreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `Task_IsTaken` tinyint(1) NOT NULL, 
    PRIMARY KEY (`Task_No`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

CREATE TABLE IF NOT EXISTS `user_task` (
    `UT_No` int(11) NOT NULL AUTO_INCREMENT, 
    `User_Email` varchar(100) NOT NULL, 
    `Task_No` int(11) NOT NULL, 
    `Task_Duration` varchar(20) NOT NULL, 
    `Task_DateTaken` date DEFAULT NULL, 
    `Task_DateFinished` timestamp NULL DEFAULT NULL, 
    `Task_IsIssue` tinyint(1) NOT NULL, 
    PRIMARY KEY (`UT_No`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

這裏是我的腳本(從形式):

//Process - Insert Task 
if(isset($_POST['btnCreateTask'])) 
{ 
if($_POST['taskName']!=NULL) 
{ 
$taskName = mysql_real_escape_string ($_POST['taskName']); 
$taskDesc = mysql_real_escape_string ($_POST['taskDesc']); 
$insertTask = "INSERT INTO task(Task_Name, Task_Desc, Task_IsTaken) VALUES('$taskName', '$taskDesc', 0)"; 
$sqlResult1 = mysql_query($insertTask);} 
else 
{ 
    echo "No task name given"; 
    $errorCode = 1; 
} 
} 


if(isset($_POST['btnAssignTask'])) 
{ 
    if($_POST['assignTaskName']!=NULL) 
{ 
    $assigntaskName = mysql_real_escape_string($_POST['assignTaskName']); 
    $assigntaskNo = mysql_real_escape_string($_POST['assignTaskNo']); 
    $assigntaskOwner = mysql_real_escape_string($_POST['assignTaskOwner']); 
    $assigntaskDuration = mysql_real_escape_string($_POST['assignTaskDuration']); 
    $updateUpcomingTask = "UPDATE task SET Task_IsTaken = '1' AND Task_No = '$assigntaskNo'"; 
    $createUserTask = "INSERT INTO user_task (User_Email, Task_No, Task_Duration, Task_DateTaken, Task_DateFinished) 
         VALUES ('$assigntaskOwner', '$assigntaskNo', '$assigntaskDuration', '$now', NULL)"; 
    $sqlResult2 = mysql_query($updateUpcomingTask); 
    $sqlResult3 = mysql_query($createUserTask); 
} 
else 
{ 
    echo "No task selected"; 
    $errorCode = 2; 
} 
} 
+1

快速瀏覽在執行查詢時沒有顯示錯誤檢查。 –

+3

您似乎在使用'$ updateUpcomingTask'查詢更新所有行 - 沒有'WHERE'子句。 – Raz

回答

1

您的代碼應改爲:

if(isset($_POST['btnAssignTask'])) 
{ 
    if($_POST['assignTaskName']!=NULL) 
{ 
    $assigntaskName = mysql_real_escape_string($_POST['assignTaskName']); 
    $assigntaskNo = intval($_POST['assignTaskNo']); 
    $assigntaskOwner = mysql_real_escape_string($_POST['assignTaskOwner']); 
    $assigntaskDuration = mysql_real_escape_string($_POST['assignTaskDuration']); 
    $updateUpcomingTask = "UPDATE task SET Task_IsTaken = '1' WHERE Task_No = $assigntaskNo"; 
    $createUserTask = "INSERT INTO user_task (User_Email, Task_No, Task_Duration, Task_DateTaken, Task_DateFinished) 
        VALUES ('$assigntaskOwner', '$assigntaskNo', '$assigntaskDuration', '$now', NULL)"; 
    $sqlResult2 = mysql_query($updateUpcomingTask); 
    $sqlResult3 = mysql_query($createUserTask); 
} 
else 
{ 
    echo "No task selected"; 
    $errorCode = 2; 
} 
}