【发布时间】:2012-09-20 14:39:35
【问题描述】:
我在下面有一个 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 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
【问题讨论】:
-
@rs 我从表列中删除了 FileId,因此表中有 9 列,php 中有 9 列,但仍然没有从 mysqli/php 插入数据
-
您看到任何错误吗?你能在网页上打印你的sql并尝试手动运行并测试。
-
所有数据类型都匹配吗?您是否为所有非空字段传递了一个值?插入的主键对表来说是唯一的吗?您是否使用/在正确的数据库中?您的插入语句中的列数是否与您尝试插入的字段数相匹配?这可能是数据库的特权/权限问题吗?
-
当有多个整数时,为什么要将所有变量绑定为字符串?