Php 使用MySQLi查看、编辑、添加和删除记录
我按照这个[Tutorial][1]从我的数据库中创建、添加、编辑和删除学校班级信息记录 我可以成功删除记录,但无法添加新记录或编辑现有记录 当我选择编辑一行时,url会更新,例如,Php 使用MySQLi查看、编辑、添加和删除记录,php,html,mysql,mysqli,Php,Html,Mysql,Mysqli,我按照这个[Tutorial][1]从我的数据库中创建、添加、编辑和删除学校班级信息记录 我可以成功删除记录,但无法添加新记录或编辑现有记录 当我选择编辑一行时,url会更新,例如,records.php?cid=2,但是records.php会以标题“New Class”打开,其中没有填写任何现有记录信息 编辑 我已经为bind_参数更新了代码(删除了“?”语法错误)和类型变量的数量 新记录正在添加,但仍不确定如何通过$cid检查 谢谢你的帮助,将来一定会考虑使用LaaField.P/> <
records.php?cid=2
,但是records.php会以标题“New Class”打开,其中没有填写任何现有记录信息
编辑
我已经为bind_参数更新了代码(删除了“?”语法错误)和类型变量的数量
新记录正在添加,但仍不确定如何通过$cid检查
谢谢你的帮助,将来一定会考虑使用LaaField.P/> < P>你在这行中的错误
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();
}
我在代码中注意到的一点是,您检查了一个尚未声明的变量,即
$cid
,请尝试首先获取该变量,然后检查它:
$cid = $_GET['cid'];
然后检查您可以:
if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['cid'] && is_numeric($_GET['cid']))
尝试在编辑页面顶部添加此代码,以便在执行任何其他操作之前掌握您的
id
,这样,如果出现问题,您可以将用户重定向到另一个页面。这是因为您对$cid
的检查从未通过。我强烈建议您避免使用类似的教程,而是找到适合您的风格和需要的。从头开始构建您自己的站点是一项困难的工作,您将花费大量时间痛苦地重新完成框架在几分钟内可以完成的工作。这是一个非常适合初学者的好例子,文档中包含的介绍比大多数教程的质量都要高。如果有同样的时间,你会更有效率。@tadman我认为框架,尤其是Laravel,非常好,但是了解一下框架对我来说做了什么怎么样?努力学习核心语言是不值得的?(“?,“?”,“?”,“?”,“?”,“?”,“?”,“?”,“?”)
这是另一个语法错误。你从哪儿弄来的?我可以这么说,不是从教程中。你的代码包含太多错误。好吧,如果你看不到你的生命(OP),要么你留下了问题,要么你不知道如何处理这些评论或下面的答案。我已经向您展示了大多数错误的位置,我没有调试您的整个代码。下面是你的答案。如果它解决了问题,就接受它。如果没有,告诉他们。祝你好运。在页面顶部检查$cid
并在末尾声明是否正确?谢谢@vSugumar的帮助。我已经应用了您建议的更改,并在页面顶部声明$cid(上面更新的代码)。当我选择编辑行时,会传递并显示$cid,但不会传递其他字段。当我输入有效数据并点击submit时,在“if(is_numeric($_POST['cid'])”行中出现错误“Undefined index:cid”