使用MySQLi查看,编辑,添加,删除记录

时间:2017-03-25 20:13:59

标签: php html mysql mysqli

我正在关注此[教程] [1]创建添加新内容,编辑现有数据并从我的数据库中删除记录以获取学校课程信息。

我可以成功删除记录,但我无法添加新记录或编辑现有记录。

当我选择编辑一行时,网址会更新,例如records.php?cid=2但是records.php打开时标题为“新类”,没有填写任何现有记录信息。

修改

我更新了代码(删除'?'语法错误)和bind_param的类型变量数。

新记录现在正在添加,但仍不确定如何通过$ cid检查。

感谢您的帮助,并且肯定会考虑将来使用Laravel。

2 个答案:

答案 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,这样如果出现问题,您可以将用户重定向到另一个页面。