技术标签: web 学生管理系统 MySQL PHP 网页开发
PHP+MySQL 实现数据库增删改查
通过学生信息管理系统,熟悉PHP+MySQL增删改查,本文介绍了学生信息管理系统。
此项目运行环境:Apache2.4.41 PHP7.3.8
备用地址:http://39.105.0.128/PHP/php_mysql_student/
https://pan.baidu.com/s/1OQDBoRqOBMH7gBdUF_lcBQ
MySQL数据库创建
建库语句
# 创建数据库
CREATE DATABASE `studb`;
# 使用数据库
USE `studb`;
#创建数据表
CREATE TABLE `student` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`sex` char(2) DEFAULT NULL COMMENT '性别',
`age` varchar(6) DEFAULT NULL COMMENT '年龄',
`edu` varchar(12) DEFAULT NULL COMMENT '学历',
`salary` decimal(10,2) DEFAULT NULL COMMENT '工资',
`bonus` decimal(10,2) DEFAULT NULL COMMENT '奖金',
`city` varchar(32) DEFAULT NULL COMMENT '籍贯',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#插入测试数据
INSERT INTO `student` VALUES ('1', '测试1', '男', '22', '大专', '4500.00', '1000.00', '广东韶关');
INSERT INTO `student` VALUES ('2', '测试2', '女', '20', '本科', '5000.00', '500.00', '湖南长沙');
INSERT INTO `student` VALUES ('3', '前端1', '女', '22', '大专', '5000.00', '700.00', '湖南郴州');
INSERT INTO `student` VALUES ('4', '前端2', '女', '25', '本科', '8000.00', '200.00', '湖南娄底');
INSERT INTO `student` VALUES ('5', '后台', '男', '22', '专科', '7000.00', '200.00', '湖南郴州');
创建一个学生列表的数据库:
1. 查询数据库
1.1. 创建文件conn.php,保存常量
<?php
// 连接数据库、设置字符集
$link = mysqli_connect('localhost', 'root', 'root', 'studb');
mysqli_set_charset($link, 'utf8');
?>
1.2. 创建入口文件index.html(连接数据库、查询数据)
<?php
//连接数据库
include 'conn.php';
//编写查询sql语句
$sql = 'SELECT * FROM `student`';
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
//编写查询数量sql语句
$sql = 'SELECT COUNT(*) FROM `student`';
//执行查询操作、处理结果集
$n = mysqli_query($link, $sql);
if (!$n) {
exit('查询数量sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$num = mysqli_fetch_assoc($n);
//将一维数组的值转换为一个字符串
$num = implode($num);
?>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
</head>
<style type="text/css">
.wrapper {width: 1000px;margin: 20px auto;}
h1 {text-align: center;}
.add {margin-bottom: 20px;}
.add a {text-decoration: none;color: #fff;background-color: #00CCFF;padding: 6px;border-radius: 5px;}
td {text-align: center;}
</style>
<body background="student.jpg">
<div class="wrapper">
<h1>学生信息管理系统</h1>
<div class="add">
<a href="addStudent.html">添加学生</a> 共<?php echo $num; ?>个学生
</div>
<table width="960" border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>学历</th>
<th>工资</th>
<th>奖金</th>
<th>籍贯</th>
<th>操作</th>
</tr>
<?php
foreach ($data as $key => $value) {
foreach ($value as $k => $v) {
$arr[$k] = $v;
}
echo "<tr>";
echo "<td>{$arr['id']}</td>";
echo "<td>{$arr['name']}</td>";
echo "<td>{$arr['sex']}</td>";
echo "<td>{$arr['age']}</td>";
echo "<td>{$arr['edu']}</td>";
echo "<td>{$arr['salary']}</td>";
echo "<td>{$arr['bonus']}</td>";
echo "<td>{$arr['city']}</td>";
echo "<td>
<a href='javascript:del({$arr['id']})'>删除</a>
<a href='editStudent.php?id={$arr['id']}'>修改</a>
</td>";
echo "</tr>";
// echo "<pre>";
// print_r($arr);
// echo "</pre>";
}
// 关闭连接
mysqli_close($link);
?>
</table>
</div>
<script type="text/javascript">
function del (id) {
if (confirm("确定删除这个学生吗?")){
window.location = "action_del.php?id="+id;
}
}
</script>
</body>
</html>
1.2. 创建图片student.jpg(网页背景图)
页面如图:
2. 添加学生
2.1 创建文件addStudent.htmt
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
<style type="text/css">
.box {display:table;margin:0 auto;}
h2 {text-align: center;}
.add {margin-bottom: 20px;}
</style>
</head>
<body background="student.jpg">
<!--输出定制表单-->
<div class="box">
<h2>添加学生</h2>
<div class="add">
<form action="action_addStudent.php" method="post" enctype="multipart/form-data">
<table border="1">
<tr><th>姓 名:</th><td><input type="text" name="name" size="25" value=""></td></tr>
<tr><th>性 别:</th><td>
<label><input checked type="radio" name="sex" value="男">男</label>
<label><input type="radio" name="sex" value="女">女</label>
</td></tr>
<tr><th>年 龄:</th><td><input type="text" name="age" size="25" value=""></td></tr>
<tr><th>学 历:</th><td>
<select name="edu" >
<option selected value="">--请选择--</option>
<option value="研究生">研究生</option>
<option value="本科">本科</option>
<option value="专科">专科</option>
<option value="高中">高中</option>
<option value="初中">初中</option>
</select>
</td></tr>
<tr><th>工 资:</th><td><input type="text" name="salary" size="25" value=""></td></tr>
<tr><th>奖 金:</th><td><input type="text" name="bonus" size="25" value=""></td></tr>
<tr><th>籍 贯:</th><td><input type="text" name="city" size="25" value=""></td></tr>
<tr><th></th><td>
<input type="button" onClick="javascript :history.back(-1);" value="返回" >
<input type="reset" value="重置">
<input type="submit" value="提交">
</td></tr>
</table>
</form>
</div>
</div>
</body>
</html>
页面如图:
如果直接提交,不提交任何数据:
3秒后跳回首页:
2.2 创建处理增加新闻的服务端文件action_addStudent.php
<?php
//连接数据库
include 'conn.php';
// 获取增加的学生信息
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$edu = $_POST['edu'];
$salary = $_POST['salary'];
$bonus = $_POST['bonus'];
$city = $_POST['city'];
//编写预处理sql语句
$sql = "INSERT INTO `student` VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)";
//预处理SQL模板
$stmt = mysqli_prepare($link, $sql);
// 参数绑定,并为已经绑定的变量赋值
mysqli_stmt_bind_param($stmt, 'sssssss', $name, $sex, $age, $edu, $salary, $bonus, $city);
if ($name) {
// 执行预处理(第1次执行)
$result = mysqli_stmt_execute($stmt);
//关闭连接
mysqli_close($link);
if ($result) {
//添加学生成功
//跳转到首页
header("Location:index.php");
}else{
exit('添加学生sql语句执行失败。错误信息:' . mysqli_error($link));
}
}else{
//添加学生失败
//输出提示,跳转到首页
echo "添加学生失败!<br><br>";
header('Refresh: 3; url=index.php'); //3s后跳转
}
3. 删除学生信息
点击删除按钮,通过服务端文件action_del.php进行删除处理
<?php
//连接数据库
include 'conn.php';
$id = $_GET['id'];
//删除指定数据
//编写删除sql语句
$sql = "DELETE FROM student WHERE id={$id}";
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询数据sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
// 删除完跳转到首页
header("Location:index.php");
页面如图:
js弹出提示信息:
4. 修改学生信息
4.1 点击修改按钮,跳转到文件editStudent.php进行修改处理
<?php
//连接数据库
include 'conn.php';
//获取id
$id = $_GET['id'];
//编写查询sql语句
$sql = "SELECT * FROM `student` WHERE `id`=$id";
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
//将二维数数组转化为一维数组
foreach ($data as $key => $value) {
foreach ($value as $k => $v) {
$arr[$k]=$v;
}
}
// echo "<pre>";
// var_dump($arr);
// echo "</pre>";
?>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
<style type="text/css">
.box {display:table;margin:0 auto;}
h2 {text-align: center;}
.add {margin-bottom: 20px;}
</style>
</head>
<body background="student.jpg">
<!--输出定制表单-->
<div class="box">
<h2>修改学生信息</h2>
<div class="add">
<form action="action_editStudent.php" method="post" enctype="multipart/form-data">
<table border="1">
<tr><th>编 号:</th><td><input type="text" name="id" size="5" value="<?php echo $arr["id"] ?>" readonly="readonly"></td></tr>
<tr><th>姓 名:</th><td><input type="text" name="name" size="25" value="<?php echo $arr["name"] ?>"></td></tr>
<tr><th>性 别:</th><td>
<label><input <?php if ($arr["sex"] == "男") {
echo "checked";
} ?> type="radio" name="sex" value="男">男</label>
<label><input <?php if ($arr["sex"] == "女") {
echo "checked";
} ?> type="radio" name="sex" value="女">女</label>
</td></tr>
<tr><th>年 龄:</th><td><input type="text" name="age" size="25" value="<?php echo $arr["age"] ?>"></td></tr>
<tr><th>学 历:</th><td>
<select name="edu" >
<option <?php if (!$arr["edu"]) {
echo "selected";
} ?> value="">--请选择--</option>
<option <?php if ($arr["edu"] == "研究生") {
echo "selected";
} ?> value="研究生">研究生</option>
<option <?php if ($arr["edu"] == "本科") {
echo "selected";
} ?> value="本科">本科</option>
<option <?php if (!$arr["edu"] == "专科") {
echo "selected";
} ?> value="专科">专科</option>
<option <?php if (!$arr["edu"] == "高中") {
echo "selected";
} ?> value="高中">高中</option>
<option <?php if (!$arr["edu"] == "初中") {
echo "selected";
} ?> value="初中">初中</option>
</select>
</td></tr>
<tr><th>工 资:</th><td><input type="text" name="salary" size="25" value="<?php echo $arr["salary"] ?>"></td></tr>
<tr><th>奖 金:</th><td><input type="text" name="bonus" size="25" value="<?php echo $arr["bonus"] ?>"></td></tr>
<tr><th>籍 贯:</th><td><input type="text" name="city" size="25" value="<?php echo $arr["city"] ?>"></td></tr>
<tr><th></th><td>
<input type="button" onClick="javascript :history.back(-1);" value="返回" >
<input type="submit" value="提交">
</td></tr>
</table>
</form>
</div>
</div>
</body>
</html>
页面如下:
4.2 通过服务端文件action_editStudent.php进行修改处理
<?php
//连接数据库
include 'conn.php';
// 获取修改后的学生信息
$id = $_POST['id'];
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$edu = $_POST['edu'];
$salary = $_POST['salary'];
$bonus = $_POST['bonus'];
$city = $_POST['city'];
//编写预处理sql语句
$sql = "UPDATE `student`
SET
`name`= ?,
`sex`= ?,
`age`= ?,
`edu`= ?,
`salary`= ?,
`bonus`= ?,
`city`= ?
WHERE `id`= ?";
//预处理SQL模板
$stmt = mysqli_prepare($link, $sql);
// 参数绑定,并为已经绑定的变量赋值
mysqli_stmt_bind_param($stmt, 'ssssssss', $name, $sex, $age, $edu, $salary, $bonus, $city, $id);
if ($name) {
// 执行预处理(第1次执行)
$result = mysqli_stmt_execute($stmt);
//关闭连接
mysqli_close($link);
if ($result) {
//修改学生成功
//跳转到首页
header("Location:index.php");
}else{
exit('修改学生信息sql语句执行失败。错误信息:' . mysqli_error($link));
}
}else{
//修改学生失败
//输出提示,跳转到首页
echo "修改学生失败!<br><br>";
header('Refresh: 3; url=index.php'); //3s后跳转
}
如果将修改的姓名改为空,提交:
输出失败提示:
3秒后跳回首页:
文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr
文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc
文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8
文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束
文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求
文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname
文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立
文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码
文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词
文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限
文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定
文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland