启动Wampserver,确保MySQL服务启动成功
一般来说只要
该图标是绿色的就行
也可打开phpMyAdmin登陆进行测试:

如果能够登陆成功则OK
一、创建数据库,数据表
(1)创建一个名称为db_study的数据库
create database db_study;
(2)在数据库db_study中创建表t_student
create table if not exists t_student(sno int auto_increment,name varchar(20) not null,age int(3) not null,major varchar(30) not null,primary key(sno))engine=InnoDB default charset=utf8;
二、添加测试数据
insert into t_student(sno,name,age,major) values(1001,'张三',19,'现代教育技术');insert into t_student(name,age,major) values('李四',18,'计算机应用技术');insert into t_student(name,age,major) values('王五',20,'计算机网络技术');insert into t_student(name,age,major) values('赵六',21,'计算机网络技术');insert into t_student(name,age,major) values('流的话',18,'大数据应用技术');insert into t_student(name,age,major) values('渣渣辉',20,'计算机网络技术');insert into t_student(name,age,major) values('顾天乐',22,'英语教育');insert into t_student(name,age,major) values('张雪有',21,'数学教育');insert into t_student(name,age,major) values('赵子龙',19,'云计算应用技术');insert into t_student(name,age,major) values('侯毅',20,'计算机网络技术');insert into t_student(name,age,major) values('益阳浅析',19,'计算机网络技术');insert into t_student(name,age,major) values('周杰林',21,'计算机网络技术');insert into t_student(name,age,major) values('林君君',22,'学前教育');insert into t_student(name,age,major) values('赵琳琳',23,'语文教育');insert into t_student(name,age,major) values('陈霖',21,'电信服务管理');insert into t_student(name,age,major) values('老六',19,'体育教育');
三、连接数据库
从php7.0起使用mysqli_connect()函数连接mysql数据库
用法:
mysqli_connect(“主机名”,”mysql用户名”,”mysql密码”,”要连接的数据库名称”)
$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}echo '连接成功<br>';
四、执行SQL语句
(1)例:执行插入语句
$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}$sql = "insert into t_student(name,age,major) values('卫龙',20,'动漫设计')";$rs = mysqli_query($conn,$sql);var_dump($rs);
打开php文件后,可以看到下图的结果,打印的变量$rs为true,即表示执行插入语句成功
但是查看数据库表中的数据,看到是乱码
解决:在数据库连接成功后,mysqli_query($conn,”set names utf8”);
$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}mysqli_query($conn,"set names utf8"); // 解决中文乱码$sql = "insert into t_student(name,age,major) values('卫龙',20,'动漫设计')";$rs = mysqli_query($conn,$sql);if($rs) {echo '插入成功';} else {echo '插入失败';}
刷新或者重新打开php文件后,再查看数据中的数据,解决乱码的问题了。
(2)例:执行查询语句
$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}mysqli_query($conn,"set names utf8"); // 解决中文乱码$sql = "select sno,name,age,major from t_student";$rs = mysqli_query($conn,$sql);var_dump($rs);
五、将结果集返回到数组中
上面执行查询语句的例子,我们得到的返回结果是一个对象,那么如何获得我们查询的数据呢
mysqli_fetch_array() — 从结果集中取得一行作为关联数组
例:
$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}mysqli_query($conn,"set names utf8"); // 解决中文乱码$sql = "select sno,name,age,major from t_student";$rs = mysqli_query($conn,$sql);$arr = mysqli_fetch_array($rs);var_dump($arr);
六、关闭结果集、关闭连接
mysqli_free_result($result)用于释放结果集,该函数仅需要在考虑返回很大的结果集时进行调用。因为在脚本结束后,所有关联的内存都会被自动释放。
mysqli_close($conn)用于关闭数据库连接:在完成数据库的操作后,应该调用该函数关闭连接,从而节省资源。
七、php管理MySQL数据库中的数据
由于操作数据库前都需要进行数据库的连接,所以可以把数据库连接的代码写在一个php文件中,需要连接数据库的时候,直接引入文件即可。
创建dbconn.php
<?php$dbhost = 'localhost'; // mysql服务器主机地址$dbuser = 'root'; // mysql用户名$dbpass = ''; // mysql用户名密码$dbname = 'db_study'; // 连接的数据库名称$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);if(!$conn){die('连接失败: ' . mysqli_connect_error());}mysqli_query($conn,"set names utf8"); // 解决中文乱码?>
7.1 添加数据
创建add.html
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>添加学生</title></head><body><form action="doAdd.php" method="post"><div>姓名:<input type="text" name="name"></div><div>年龄:<input type="text" name="age"></div><div>专业:<input type="text" name="major"></div><input type="submit" value="提交"></form></body></html>
创建doAdd.php
<?phpinclude 'dbconn.php';if (isset($_POST['name']) && isset($_POST['age']) && isset($_POST['major'])) {$name = $_POST['name'];$age = $_POST['age'];$major = $_POST['major'];$sql = "insert into t_student(name,age,major) values('$name',$age,'$major')";$rs = mysqli_query($conn, $sql);if ($rs) {echo '插入成功';} else {echo '插入失败';}} else {echo "数据填写不完整";}?>
7.2 查询数据
从上面的第五点“将结果集返回到数组中”我们得知,mysqli_fetch_array() 拿到的是一行记录,那么通过循环,我们可以把数据库表中的数据都获取到
例:创建7-3-2.php
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>浏览学生数据</title></head><body><table border="1"><tr><th>学号</th><th>姓名</th><th>年龄</th><th>专业</th></tr><?phpinclude 'dbconn.php';$sql = "select sno,age,name,major from t_student";$rs = mysqli_query($conn,$sql);// 循环将结果集返回到数组中,从而获取表中所有数据记录while($arr = mysqli_fetch_array($rs)) {echo "<tr><td>$arr[sno]</td><td>$arr[name]</td><td>$arr[age]</td><td>$arr[major]</td></tr>";}?></table></body></html>
7.3 修改数据
(1)创建index.php
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>index</title></head><body><table border="1"><tr><th>学号</th><th>姓名</th><th>年龄</th><th>专业</th><th colspan="2">操作</th></tr><?phpinclude 'dbconn.php';$sql = "select sno,age,name,major from t_student";$rs = mysqli_query($conn,$sql);// 循环将结果集返回到数组中,从而获取表中所有数据记录while($arr = mysqli_fetch_array($rs)) {echo "<tr><td>$arr[sno]</td><td>$arr[name]</td><td>$arr[age]</td><td>$arr[major]</td><td><a href='update.php?sno=$arr[sno]'>修改</a></td><td><a href='doDelete.php?sno=$arr[sno]'>删除</a></td></tr>";}?></table></body></html>
效果如下:
(2)创建update.php
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>修改数据</title></head><body><?phpinclude 'dbconn.php';// 获取要修改信息的学生学号$sno = $_GET['sno'];// 编写修改sql语句$sql = "select sno,age,name,major from t_student where sno=$sno";$rs = mysqli_query($conn,$sql); // 执行sql语句$arr = mysqli_fetch_array($rs); // 将结果集返回到数组中?><form action="doUpdate.php" method="post"><div>学号:<input readonly type="text" name="sno" value="<?php echo $arr['sno'] ?>"></div><div>姓名:<input type="text" name="name" value="<?php echo $arr['name'] ?>"></div><div>年龄:<input type="text" name="age" value="<?php echo $arr['age'] ?>"></div><div>专业:<input type="text" name="major" value="<?php echo $arr['major'] ?>"></div><input type="submit" value="修改"></form></body></html>
(3)创建doUpdate.php
<?phpinclude 'dbconn.php';$sno = $_POST['sno'];$name = $_POST['name'];$age = $_POST['age'];$major = $_POST['major'];$sql = "update t_student set name='$name', age=$age, major='$major' where sno=$sno";$rs = mysqli_query($conn, $sql);if($rs) {echo "<script>alert('修改成功');location.href='index.php';</script>";} else {echo "<script>alert('修改失败');location.href='index.php';</script>";}
(4)测试
从index.php点击某个学生的修改后,进入到修改页面,如下图所示
在修改页面点击修改后
再查看数据库中是否已经成功修改数据。
7.4 删除数据
创建doDelete.php
<?phpinclude 'dbconn.php';$sno = $_GET['sno'];$sql = "delete from t_student where sno=$sno";$rs = mysqli_query($conn, $sql);if($rs) {echo "<script>alert('删除成功');location.href='index.php';</script>";} else {echo "<script>alert('删除失败');location.href='index.php';</script>";}
在index.php页面中的某一个学生点击删除,删除成功后如下图所示:

