将php的数据写入数据库

我调用课程表“tiao”,如果调课有冲突,就会显示被占用,如果不冲突就会保存到数据库中并在页面显示,可是执行时,数据库内无法写入新数据但是可以读取已有数据,页面也无课程显示是什么情况。
这是数据库属性:

img


这是调课后的显示:

img

img


界面代码

function printpage()
  {
  window.print()
  }
</script>
            </form></td></tr></table>
            </td><td width="1%">&nbsp;</td></tr>
            <tr>
                <td width="1%">&nbsp;</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%">&nbsp;</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;
    }
?>

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,需要检查数据库的连接是否正常。可以在代码中添加以下代码来测试数据库连接:

    $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 语句拷贝出来,拿到数据库那边单独执行一下,看看是否有错误,一般都是语法问题