0

「セッション」テーブルにデータを挿入すると思われる mysqli/php コードを以下に示します。以前は問題なくデータを挿入していましたが、以下のコードは変更していません。

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 を含む他のテーブルに問題がある可能性はありますか?

以下は、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
4

1 に答える 1

0

あなたが私たちに提供している情報に基づいて、次の仮定を行う必要があります。

  • あなたのロジック フローは正しく、if および for ループ内で作成しています。
  • $_SESSION 変数には、要求しているすべてのキーが含まれています

これらの仮定では、変数 $teacherId は設定されていないため、値は null です。テーブルの create ステートメントでは、TeacherID 列が null 値を受け入れないため、挿入が失敗しています。

于 2012-09-28T18:01:54.247 に答える