我正在关注此[教程] [1]创建添加新内容,编辑现有数据并从我的数据库中删除记录以获取学校课程信息。
我可以成功删除记录,但我无法添加新记录或编辑现有记录。
当我选择编辑一行时,网址会更新,例如records.php?cid=2
但是records.php打开时标题为“新类”,没有填写任何现有记录信息。
修改
我更新了代码(删除'?'语法错误)和bind_param的类型变量数。
新记录现在正在添加,但仍不确定如何通过$ cid检查。
感谢您的帮助,并且肯定会考虑将来使用Laravel。
答案 0 :(得分:0)
此行中有错误
if ($stmt = $dbcon->prepare("UPDATE class SET ModuleCode = ?, Type = ?, Room = ?, StartTime = ?, EndTime = ?, DayOfWeek = ?, StartDate = ?, EndDate = ?
WHERE ClassID=?"))
{
$stmt->bind_param("ssi",$cid, $modulecode, $type, $type, $room, $starttime, $endtime, $dow, $startdate, $enddate);
$stmt->execute();
}
类型变量的数量与变量的数量不匹配,也不需要放置撇号?标记
if ($stmt = $dbcon->prepare("UPDATE class SET ModuleCode = ?, Type = ?, Room = ?, StartTime = ?, EndTime = ?, DayOfWeek = ?, StartDate = ?, EndDate = ?
WHERE ClassID=?"))
{
$stmt->bind_param("ssissssss",$cid, $modulecode, $type, $room, $starttime, $endtime, $dow, $startdate, $enddate);
$stmt->execute();
}
以及以下代码
if ($stmt = $dbcon->prepare("INSERT INTO class(ModuleCode,Type,Room,StartTime,EndTime,DayOfWeek,StartDate,EndDate)VALUES
(?,?,?,?,?,?,?,?)"))
{
$stmt->bind_param("ss", $modulecode, $type, $room, $starttime, $endtime, $dow, $startdate, $enddate);
$stmt->execute();
$stmt->close();
}
应该是
if ($stmt = $dbcon->prepare("INSERT INTO class(ModuleCode,Type,Room,StartTime,EndTime,DayOfWeek,StartDate,EndDate)VALUES
(?,?,?,?,?,?,?,?)"))
{
$stmt->bind_param("ssssssss", $modulecode, $type, $room, $starttime, $endtime, $dow, $startdate, $enddate);
$stmt->execute();
$stmt->close();
}
答案 1 :(得分:0)
我在你的代码中注意到的一件事你检查了一个尚未声明的变量,$cid
尝试先获取变量,然后检查它:
$cid = $_GET['cid'];
然后检查你可以:
if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['cid'] && is_numeric($_GET['cid']))
尝试在您的编辑页面顶部添加此代码,以便在执行任何其他操作之前抓住您的id
,这样如果出现问题,您可以将用户重定向到另一个页面。