2012-09-28 158 views
0

我在下面有一個mysqli/php代碼,假設它將數據插入'Session'表中。現在,它用來插入先前沒有問題的數據和我沒有改變代碼如下:數據現在沒有被插入到數據庫中

if($_SERVER['REQUEST_METHOD'] == 'POST')   
{   
    $time = str_replace(array(' Hrs ', ' Mins ', ' Secs'), 
       array(':', ':', ''), $_SESSION['durationChosen']);   
    for ($i = 1, $n = $_SESSION['sessionNum']; $i <= $n; ++$i) 
    {    
      $insertsql = " 
     INSERT INTO Session 
     (SessionId, SessionTime, 
     SessionDate, SessionWeight, 
     SessionDuration, TotalMarks, 
     ModuleId, TeacherId, Room) 
     VALUES 
     (?, ?, ?, ?, ?, ?, ?, ?, ?) 
    "; 
    if (!$insert = $mysqli->prepare($insertsql)) { 
     // Handle errors with prepare operation here 
    }   
     $sessid = $_SESSION['id'] . ($n == 1 ? '' : $i); 
     $sessdate = date("Y-m-d", strtotime($_SESSION['dateChosen'])); 

     $insert->bind_param("sssssssss", $sessid, 
      $_SESSION['timeChosen'], $sessdate, 
      $_SESSION['textWeight'], $time, $_SESSION['textMarks'], 
      $_SESSION['module'], $teacherid, $_SESSION['rooms']); 

     $insert->execute(); 

     if ($insert->errno) { 
      // Handle query error here 
     }   
     $insert->close();   
    } 
} 

就像我說的這個代碼工作之前,我並沒有改變,因爲在代碼什麼。但我不記得它是否因爲我更改了數據庫(phpmyadmin)中的表,它沒有將數據插入到數據庫中。

任何人都可以檢查表創建之前和狀態,如果你看到任何問題?問題是否可以與其他包含SessionId作爲foriegn密鑰的表一起使用?

下面是一個使用SHOW CREATE TABLE會話創建表:

CREATE TABLE `Session` (
`SessionId` varchar(10) NOT NULL, 
`SessionTime` time NOT NULL, 
`SessionDate` date NOT NULL, 
`SessionWeight` int(3) NOT NULL, 
`SessionDuration` time NOT NULL, 
`TotalMarks` int(5) NOT NULL, 
`FileId` varchar(10) DEFAULT NULL, 
`ModuleId` varchar(10) NOT NULL, 
`TeacherId` int(4) NOT NULL, 
`Room` varchar(10) NOT NULL, 
PRIMARY KEY (`SessionId`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
+0

@rs我從表列中刪除FileId,所以有9列表和9列從PHP,但仍然沒有數據從mysqli/php插入 – user1701484

+3

你看到任何錯誤?你可以在網頁上打印你的sql,並嘗試手動運行並測試。 –

+0

所有的數據類型是否匹配?你是否爲所有不爲NULL的字段傳遞一個值?主鍵是否被插入到表中是唯一的?你在正確的數據庫中使用/?插入語句中的列數是否與您嘗試插入的字段數相匹配?這可能是數據庫的特權/許可問題嗎? –

回答

0

基於你給我們的信息,我們必須做出以下假設:

  • 你的邏輯流程是正確的我們正在使if和for循環內
  • $ _SESSION變量具有您要求的所有鍵

有了這些假設變量$ teacherId沒有被設置,所以它的值爲空。在您的表create語句中,TeacherID列不接受空值,因此插入失敗。