MENU

PHP对数据库的增删改查

• April 17, 2019 • Read: 2305 • Web Program

新建两张关联表

//创建班级表
create table class(
cid int unsigned  primary key auto_increment,
cname char(20) unique not null,
sum tinyint unsigned not null
);
//将一张表的主键 作为另一张表字段(逻辑外键关联)
create table stus(
sid int unsigned  primary key auto_increment,
sname char(20) unique not null,
sex enum('男','女') not null default '男',
cid int unsigned not null,
score tinyint unsigned not null
);

混编部分首页show.php

<?php
   header("content-type:text/html;charset=utf-8");
   $link = mysqli_connect("127.0.0.1","root","root","xiaohuwei");
    mysqli_set_charset($link, "utf8");
    //两表连查 通过降序排列
    $sql = "select * from class c join stus s on c.cid=s.cid order by sid desc";
    $result = mysqli_query($link, $sql);
    $arr = mysqli_fetch_all($result,MYSQLI_ASSOC);
    mysqli_free_result($result);
    mysqli_close($link);
    ?>
    <html>
    <head>
        <title></title>
    </head>
    <style>
    th,table,tr{
        text-align:center;
    }
    
    </style>
    <body>
          <table border="1" cellspacing="0"  width="500" align="center">
    <tr>
        <th><input type="checkbox" id="all" value="" /></th>
        <th>学号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>班级</th>
        <th>分数</th>
        <th>操作</th>
        
    </tr>
<!-- 这里循环遍历添加数据库读到的信息 -->
<?php 
    foreach($arr as $v){
    ?>
<tr>
        <!-- 给每个选择框添加一个唯一对应的value值即表中的sid -->
    <th><input type="checkbox" name="ids"  value="<?php echo $v["sid"];?>" /></th>
    <td><?php echo $v["sid"];?></td>
    <!-- 给每个学生名字添加唯一值sid并且带参数给修改信息页save.php-->  
    <td><a href="save.php?id=<?php echo $v["sid"];?>"><?php echo $v["sname"];?></a></td>
    <td><?php echo $v["sex"];?></td>
    <td><?php echo $v["cname"];?></td>    
    <td><?php echo $v["score"];?></td>
    <!-- 给每个学生名字添加唯一值sid并且带参数给删除页面del.php-->  
    <td><a href="del.php?id=<?php echo $v["sid"];?>">删除</a></td>
</tr>
<?php
    }
    ?>
<!-- 这里循环遍历结束 -->
<tr>
<td colspan="7" align="center">
    <input type="button" name="" id="skt" value="删除选中" />
    <input type="button" name="" onclick="add()" value="新增数据" />
    <a href="">首页</a>
    <a href="">上一页</a>
    <a href="">下一页</a>
    <a href="">尾页</a>
    </td>
</tr>

</table>
<script src="https://text.xiaohuwei.cn/weather/jquery-1.12.4.min.js"></script>
</body>
<script type="text/javascript">

function add(){//定义添加按钮函数重定向到添加页
window.location.href="add.html";
}
//实现多选框效果                   
var all=document.getElementById("all");
var ids=document.getElementsByName("ids");
all.onclick=function(){
for(var i=0; i<ids.length;i++){
ids[i].checked=this.checked;
}
}
for(var m=0;m<ids.length;m++){
ids[m].onclick=function(){
for(var n=0;n<ids.length;n++){
if(ids[n].checked==false){
all.checked = false;
return
}else {
all.checked = true;
}}}}
//实现多选框效果结束    
var kiss=[];//定义一个新数组接受下面的数据
$("#skt").click(function(){//定义当删除选中的按钮触发的函数
//循环所有的多选框不包括第一个
for(i=0;i<ids.length;i++){
//判断全部选中的框框
if(ids[i].checked){
//获取每个被选中多选框的唯一value值(sid)
kiss1=ids[i].value;
//加到数组
kiss.push(kiss1);
}
}
//在被选中的框框中遍历一下
for(k=0;k<kiss.length;k++){
//定义ajax
$.ajax({
url:"del.php?id="+kiss[k],//带参数传到删除页面
type:"get",
success:function(res){
}
})
}
window.location=href="show.php";//重定向回到本页
})
    </script>
</html>

添加页面add.html

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title></title>
</head>

<body>
<form action="addAction.php" method="post">
<table border="1" height="500" cellspacing="0" width="500" align="center" cellpadding="">
<tr>
<th colspan="2">新增学生</th>
</tr>
<tr>
<td>学生姓名:</td>
<td><input type="text" name="userName" id="userName" value="" /></td>
</tr>
<tr>
<td>性别:</td>
<td>
<select name="sex">
<option value="男">男</option>
<option value="女">女</option>
</select>
</td>
</tr>
<tr>
<td>班级:</td>
<td>
<select name="cid">
<option value="">请选择</option>
</select>
</td>
</tr>
<tr>
<td>成绩:</td>
<td>
<input type="number" name="score" id="score" value="" />
</td>
</tr>
<tr>

<td colspan="2" align="center">
<input type="submit" name="" id="" value="新增" />
<input type="reset" name="" id="" value="清除" />
</td>
</tr>
</table>
</form>
</body>
<script src="https://text.xiaohuwei.cn/weather/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function() {
$.get("getClass.php", function(res) {//无条件给getClass.php发请求得到数据库班级信息
res = eval("(" + res + ")") // json字符串 转化为 json对象
for (k in res) {//循环添加班级到页面中
var ops = `<option value='${res[k].cid}'>${res[k].cname}</option>`;//拼接字符串
$("[name='cid']").append(ops)//添加
}
})
})
</script>
</html>

获取班级信息功能页面getClass.php

<?php
//先连接到数据库
$link = mysqli_connect("127.0.0.1","root","root","xiaohuwei");
    //设置编码
mysqli_set_charset($link, "utf8");
    // 组装sql语句
$sql = "select * from class";
      //执行语句result接受
$result =  mysqli_query($link, $sql);  //结果集对象
        //转为关联数组
$row = mysqli_fetch_all($result,MYSQLI_ASSOC); // null   array
        //释放结果集
mysqli_free_result($result);
        //关闭数据库
mysqli_close($link);
        //返给前端json
echo json_encode($row);

删除功能页面del.php

<?php
header("content-type:text/html;charset=utf-8");
$id = $_GET["id"];
// 操作数据库进行删除
$link = mysqli_connect("127.0.0.1", "root", "root", "xiaohuwei");
mysqli_set_charset($link,"utf8");
$sql = "delete from stus where sid = $id";
mysqli_query($link, $sql);
$rows =  mysqli_affected_rows($link);
mysqli_close($link);
if($rows > 0){
header("location:show.php");
}else{
header("location:show.php");
}

新增学生页面addAction.php

<?php
header("content-type:text/html;charset=utf-8");
// 接收新增用户数据
$user = $_POST["userName"];
$sex = $_POST["sex"]; // 加密
$cid = $_POST["cid"];
$score = $_POST["score"];
// 链接数据 进行添加
$link = mysqli_connect("127.0.0.1","root","root","xiaohuwei");    
mysqli_set_charset($link, "utf8");
//拼接添加语句
$sql = "insert stus(sname,sex,cid,score) values('$user','$sex','$cid','$score')";
mysqli_query($link, $sql); 
$rows = mysqli_affected_rows($link);
mysqli_close($link);
if($rows > 0){
//判断受影响的函数,大于0就跳到show.php
header("location:show.php");
}else{
header("location:add.html");
}

修改学生信息页面save.php

<?php
// 接收 要修改 学生 id
$id = $_GET["id"];
// 查询学生信息
$link = mysqli_connect("127.0.0.1","root","root","xiaohuwei");
mysqli_set_charset($link, "utf8");
// 组装sql语句
$sql = "select * from stus where sid=$id";
$result =  mysqli_query($link, $sql);  //结果集对象
$row = mysqli_fetch_row($result); 
mysqli_free_result($result);
mysqli_close($link);
?>
<html>
<head>
<title>
</title>
<meta name="" charset="utf-8" content=""/>
</head>
<body>
<form action="saveAction.php" method="post">
<input type="hidden" name="id" id="" value="<?php echo $id;  ?>" />
<table border="1" height="500" cellspacing="0" width="500" align="center" cellpadding="">
<tr>
<th colspan="2">修改学生信息</th>
</tr>
<tr>
<td>学生姓名:</td>
<td><input type="text" name="userName" id="userName" value="<?php echo $row[1];?>" /></td>
</tr>
<tr>
<td>性别:</td>
<td>
<select name="sex">
<option  value="男">男</option>
<option value="女">女</option>
</select>
</td>
</tr>
<tr>
<td>班级:</td>
<td>
<select name="cid">
<option value="">请选择</option>
</select>
</td>
</tr>
<tr>
<td>成绩:</td>
<td>
<input type="number" name="score" id="score" value="<?php echo $row[4];?>" />
</td>
</tr>
<tr>
<td colspan="2" align="center"> 
<input type="submit" name="" id="" value="修改" />
<input type="reset" name="" id="" value="清除" />
</td>
</tr>
</table>
</form>
</body>
<script src="https://text.xiaohuwei.cn/weather/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
// 调 class 数据接口
$.ajax({
url:"getClass.php",
type:"post",
dataType:"json",
async:false, //同步
success:function(res){
for(k in res){
var ops = `<option value='${res[k].cid}'>${res[k].cname}</option>`;
$("[name='cid']").append(ops)
}
// 选择 男还是女
var sex = "<?php echo $row[2];?>";
$("[value='"+sex+"']").prop("selected",true);
var cid = "<?php echo $row[3];?>";
$("[value='"+cid+"']").prop("selected",true);
}
})
})    
</script>
</html>

修改学生信息页面saveAction.php

<?php
header("content-type:text/html;charset=utf-8");
// 接收新增用户数据
$user = $_POST["userName"];
$sex = $_POST["sex"]; // 加密
$cid = $_POST["cid"];
$score = $_POST["score"];
$id = $_POST["id"];
//操作数据库执行修改
$link = mysqli_connect("127.0.0.1","root","root","xiaohuwei");
mysqli_set_charset($link, "utf8");
// 组装sql
$sql = "update stus set sname='$user',sex='$sex',cid='$cid',score='$score' where sid=$id";
mysqli_query($link, $sql);
// 受影响 行数值
$rows = mysqli_affected_rows($link);
mysqli_close($link);
// var_dump($rows);
if($rows > 0){
header("location:show.php");
}else{
header("location:save.php?id=".$id);
}
Leave a Comment

2 Comments
  1. 不懂PHP,上半年学了MySQL基础操作,有一个问题,像这种对数据库连接账密都显示出来了,那开发环境别人直接获取相应的链接文件岂不是数据库密码这些全部都暴露了?有没有什么解决方案?

    1. @程志辉PHP文件放到服务器之后,当浏览器请求该文件后,php会在服务器端执行后反馈到浏览器,所以只能在浏览器看到编译后的html的源码,php源代码是看不到的::quyin:1huaji::