我调用课程表“tiao”,如果调课有冲突,就会显示被占用,如果不冲突就会保存到数据库中并在页面显示,可是执行时,数据库内无法写入新数据但是可以读取已有数据,页面也无课程显示是什么情况。
这是数据库属性:
function printpage()
{
window.print()
}
</script>
</form></td></tr></table>
</td><td width="1%"> </td></tr>
<tr>
<td width="1%"> </td>
<td width="96%">
<table width="100%">
<td colspan="2">
<table width="100%" class="cont tr_color">
<tr>
<th>课程名称</th><th width="120">地点</th>
<th width="120">日期</th>
<th width="120">时间</th>
<th width="200">班级</th>
<th width="100">操作</th>
</tr>
<?php
foreach($list["data"] as $row) {
?>
<tr align="center" class="d">
<td><?php echo db_get_val("kecheng",$row['kechengid'],"title")?></td>
<td><?php echo db_get_val("jiaoshi",$row['jiaoshiid'],"title")?></td>
<td><?php echo $row['begintime'];?></td>
<td align="center"><?php echo db_get_val("jie",$row['jieid'],"title")?></td>
<td align="center"><?php echo db_get_val("category",$row['categoryid'],"title")?>-<?php echo db_get_val("category",$row['category1id'],"title")?></td>
<td align="center"><a style="display: none" href="<?php echo $tb_name;?>.php?id=<?php echo $row['id'];?>&kechengid=<?php echo $row["kechengid"];?>">编辑</a> <a href="?id=<?php echo $row['id'];?>&act=del" onclick='return confirm("真的要删除?不可恢复!");'>删除</a></td>
</tr>
<?php } ?>
</table>
</td>
</tr>
</table>
</td>
<td width="1%"> </td>
</tr>
<tr><td height="20"></td></tr>
</table>
</td>
</tr>
调课判断代码
<?php
include_once("inc.php");
$tb_name = "tiao";
if ($_REQUEST["id"]) {
$rs = db_get_row("select * from $tb_name where id=". $_REQUEST["id"]);
}
if ($_POST){
$rs1 = db_get_row("select * from $tb_name where jiaoshiid=".$_POST["jiaoshiid"]." and begintime='".$_POST["begintime"]."' and jieid=".$_POST["jieid"]);
if($rs1["id"]){
goBakMsg("此课已被占用");
die;
}
$data = array();
$data["kechengid"] = "'".$_POST["kechengid"]."'";
$data["categoryid"] = "'".$_POST["categoryid"]."'";
$data["category1id"] = "'".$_POST["category1id"]."'";
$data["jiaoshiid"] = "'".$_POST["jiaoshiid"]."'";
$data["jieid"] = "'".$_POST["jieid"]."'";
$data["zhigongid"] = "'".db_get_val("kecheng",$_POST["kechengid"],"zhigongid")."'";
$data["begintime"] = "'".$_POST["begintime"]."'";
if ($_REQUEST["id"]) {
db_mdf($tb_name,$data,$_REQUEST["id"]);
} else {
db_add($tb_name,$data);
}
urlMsg("提交成功", $tb_name."_list.php");
die;
}
?>
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,需要检查数据库的连接是否正常。可以在代码中添加以下代码来测试数据库连接:
$connection = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if(mysqli_connect_errno()){
die("Database connection failed: " . mysqli_connect_error());
}
如果连接失败,将会输出错误信息。
其次,需要检查代码中的SQL语句是否正确。可以将SQL语句打印出来进行检查,例如:
$sql = "SELECT * FROM tiao";
echo $sql;
确保SQL语句正确且与数据库中的表名和字段名一致。
还需要检查代码中的错误处理是否完善。可以使用mysqli_error()函数获取最后一次MySQL操作的错误信息。例如:
$result = mysqli_query($connection, $sql);
if(!$result){
die("Database query failed: " . mysqli_error($connection));
}
另外,需要检查插入数据的代码是否正确。可以将插入语句打印出来进行检查。例如:
$sql = "INSERT INTO tiao (course, teacher, location) VALUES ('English', 'David', 'Room 301')";
echo $sql;
确保插入语句正确且字段名和数据类型一致。
最后,需要检查代码中调课判断的逻辑是否正确。可以使用SELECT语句查询是否有重复数据。例如:
$sql = "SELECT * FROM tiao WHERE course='English' AND teacher='David' AND location='Room 301'";
$result = mysqli_query($connection, $sql);
if(mysqli_num_rows($result) > 0) {
echo "Conflicting schedule!";
} else {
// 插入数据到数据库中
}
综上所述,优化问题的关键是要排除各种可能存在的错误。保证数据库连接正常,SQL语句正确,错误处理完善,插入语句正确,调课判断逻辑正确等等。同时也要注意在代码中添加一些必要的调试信息,并通过日志等方式记录错误信息,以方便查找和解决问题。
可以 insert 语句拷贝出来,拿到数据库那边单独执行一下,看看是否有错误,一般都是语法问题