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
@rs我從表列中刪除FileId,所以有9列表和9列從PHP,但仍然沒有數據從mysqli/php插入 – user1701484
你看到任何錯誤?你可以在網頁上打印你的sql,並嘗試手動運行並測試。 –
所有的數據類型是否匹配?你是否爲所有不爲NULL的字段傳遞一個值?主鍵是否被插入到表中是唯一的?你在正確的數據庫中使用/?插入語句中的列數是否與您嘗試插入的字段數相匹配?這可能是數據庫的特權/許可問題嗎? –