数据现在没有插入数据库

时间:2012-09-28 17:24:12

标签: php sql database mysqli

我有一个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 Session创建表:

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

1 个答案:

答案 0 :(得分:0)

根据您提供给我们的信息,我们必须做出以下假设:

  • 您的逻辑流程是正确的,我们在if和for循环中进行了
  • $ _SESSION变量包含您声明的所有密钥

根据这些假设,变量$ teacherId未被设置,因此它的值为null。在您的表create语句中,TeacherID列不接受空值,因此插入失败。