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

一、创建数据库,数据表

(1)创建一个名称为db_study的数据库

  1. create database db_study;

(2)在数据库db_study中创建表t_student

  1. create table if not exists t_student(
  2. sno int auto_increment,
  3. name varchar(20) not null,
  4. age int(3) not null,
  5. major varchar(30) not null,
  6. primary key(sno)
  7. )engine=InnoDB default charset=utf8;

二、添加测试数据

  1. insert into t_student(sno,name,age,major) values(1001,'张三',19,'现代教育技术');
  2. insert into t_student(name,age,major) values('李四',18,'计算机应用技术');
  3. insert into t_student(name,age,major) values('王五',20,'计算机网络技术');
  4. insert into t_student(name,age,major) values('赵六',21,'计算机网络技术');
  5. insert into t_student(name,age,major) values('流的话',18,'大数据应用技术');
  6. insert into t_student(name,age,major) values('渣渣辉',20,'计算机网络技术');
  7. insert into t_student(name,age,major) values('顾天乐',22,'英语教育');
  8. insert into t_student(name,age,major) values('张雪有',21,'数学教育');
  9. insert into t_student(name,age,major) values('赵子龙',19,'云计算应用技术');
  10. insert into t_student(name,age,major) values('侯毅',20,'计算机网络技术');
  11. insert into t_student(name,age,major) values('益阳浅析',19,'计算机网络技术');
  12. insert into t_student(name,age,major) values('周杰林',21,'计算机网络技术');
  13. insert into t_student(name,age,major) values('林君君',22,'学前教育');
  14. insert into t_student(name,age,major) values('赵琳琳',23,'语文教育');
  15. insert into t_student(name,age,major) values('陈霖',21,'电信服务管理');
  16. insert into t_student(name,age,major) values('老六',19,'体育教育');

三、连接数据库

从php7.0起使用mysqli_connect()函数连接mysql数据库
用法
mysqli_connect(“主机名”,”mysql用户名”,”mysql密码”,”要连接的数据库名称”)

  1. $dbhost = 'localhost'; // mysql服务器主机地址
  2. $dbuser = 'root'; // mysql用户名
  3. $dbpass = ''; // mysql用户名密码
  4. $dbname = 'db_study'; // 连接的数据库名称
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  6. if(!$conn)
  7. {
  8. die('连接失败: ' . mysqli_connect_error());
  9. }
  10. echo '连接成功<br>';

四、执行SQL语句

mysqli_query() 函数—-对数据库执行一次查询
image.png

(1)例:执行插入语句

  1. $dbhost = 'localhost'; // mysql服务器主机地址
  2. $dbuser = 'root'; // mysql用户名
  3. $dbpass = ''; // mysql用户名密码
  4. $dbname = 'db_study'; // 连接的数据库名称
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  6. if(!$conn)
  7. {
  8. die('连接失败: ' . mysqli_connect_error());
  9. }
  10. $sql = "insert into t_student(name,age,major) values('卫龙',20,'动漫设计')";
  11. $rs = mysqli_query($conn,$sql);
  12. var_dump($rs);

打开php文件后,可以看到下图的结果,打印的变量$rs为true,即表示执行插入语句成功
image.png
但是查看数据库表中的数据,看到是乱码
image.png
解决:在数据库连接成功后,mysqli_query($conn,”set names utf8”);

  1. $dbhost = 'localhost'; // mysql服务器主机地址
  2. $dbuser = 'root'; // mysql用户名
  3. $dbpass = ''; // mysql用户名密码
  4. $dbname = 'db_study'; // 连接的数据库名称
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  6. if(!$conn)
  7. {
  8. die('连接失败: ' . mysqli_connect_error());
  9. }
  10. mysqli_query($conn,"set names utf8"); // 解决中文乱码
  11. $sql = "insert into t_student(name,age,major) values('卫龙',20,'动漫设计')";
  12. $rs = mysqli_query($conn,$sql);
  13. if($rs) {
  14. echo '插入成功';
  15. } else {
  16. echo '插入失败';
  17. }

刷新或者重新打开php文件后,再查看数据中的数据,解决乱码的问题了。
image.png

(2)例:执行查询语句

  1. $dbhost = 'localhost'; // mysql服务器主机地址
  2. $dbuser = 'root'; // mysql用户名
  3. $dbpass = ''; // mysql用户名密码
  4. $dbname = 'db_study'; // 连接的数据库名称
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  6. if(!$conn)
  7. {
  8. die('连接失败: ' . mysqli_connect_error());
  9. }
  10. mysqli_query($conn,"set names utf8"); // 解决中文乱码
  11. $sql = "select sno,name,age,major from t_student";
  12. $rs = mysqli_query($conn,$sql);
  13. var_dump($rs);

以上代码得到的结果如下图:
image.png

五、将结果集返回到数组中

上面执行查询语句的例子,我们得到的返回结果是一个对象,那么如何获得我们查询的数据呢
mysqli_fetch_array() — 从结果集中取得一行作为关联数组
image.png
例:

  1. $dbhost = 'localhost'; // mysql服务器主机地址
  2. $dbuser = 'root'; // mysql用户名
  3. $dbpass = ''; // mysql用户名密码
  4. $dbname = 'db_study'; // 连接的数据库名称
  5. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  6. if(!$conn)
  7. {
  8. die('连接失败: ' . mysqli_connect_error());
  9. }
  10. mysqli_query($conn,"set names utf8"); // 解决中文乱码
  11. $sql = "select sno,name,age,major from t_student";
  12. $rs = mysqli_query($conn,$sql);
  13. $arr = mysqli_fetch_array($rs);
  14. var_dump($arr);

以上代码得到的结果如下图:
image.png

六、关闭结果集、关闭连接

mysqli_free_result($result)用于释放结果集,该函数仅需要在考虑返回很大的结果集时进行调用。因为在脚本结束后,所有关联的内存都会被自动释放。
mysqli_close($conn)用于关闭数据库连接:在完成数据库的操作后,应该调用该函数关闭连接,从而节省资源。

七、php管理MySQL数据库中的数据

由于操作数据库前都需要进行数据库的连接,所以可以把数据库连接的代码写在一个php文件中,需要连接数据库的时候,直接引入文件即可。
创建dbconn.php

  1. <?php
  2. $dbhost = 'localhost'; // mysql服务器主机地址
  3. $dbuser = 'root'; // mysql用户名
  4. $dbpass = ''; // mysql用户名密码
  5. $dbname = 'db_study'; // 连接的数据库名称
  6. $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
  7. if(!$conn)
  8. {
  9. die('连接失败: ' . mysqli_connect_error());
  10. }
  11. mysqli_query($conn,"set names utf8"); // 解决中文乱码
  12. ?>

7.1 添加数据

创建add.html

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>添加学生</title>
  6. </head>
  7. <body>
  8. <form action="doAdd.php" method="post">
  9. <div>姓名:<input type="text" name="name"></div>
  10. <div>年龄:<input type="text" name="age"></div>
  11. <div>专业:<input type="text" name="major"></div>
  12. <input type="submit" value="提交">
  13. </form>
  14. </body>
  15. </html>

创建doAdd.php

  1. <?php
  2. include 'dbconn.php';
  3. if (isset($_POST['name']) && isset($_POST['age']) && isset($_POST['major'])) {
  4. $name = $_POST['name'];
  5. $age = $_POST['age'];
  6. $major = $_POST['major'];
  7. $sql = "insert into t_student(name,age,major) values('$name',$age,'$major')";
  8. $rs = mysqli_query($conn, $sql);
  9. if ($rs) {
  10. echo '插入成功';
  11. } else {
  12. echo '插入失败';
  13. }
  14. } else {
  15. echo "数据填写不完整";
  16. }
  17. ?>

image.pngimage.png

7.2 查询数据

从上面的第五点“将结果集返回到数组中”我们得知,mysqli_fetch_array() 拿到的是一行记录,那么通过循环,我们可以把数据库表中的数据都获取到
例:创建7-3-2.php

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>浏览学生数据</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <th>学号</th>
  11. <th>姓名</th>
  12. <th>年龄</th>
  13. <th>专业</th>
  14. </tr>
  15. <?php
  16. include 'dbconn.php';
  17. $sql = "select sno,age,name,major from t_student";
  18. $rs = mysqli_query($conn,$sql);
  19. // 循环将结果集返回到数组中,从而获取表中所有数据记录
  20. while($arr = mysqli_fetch_array($rs)) {
  21. echo "<tr><td>$arr[sno]</td><td>$arr[name]</td><td>$arr[age]</td><td>$arr[major]</td></tr>";
  22. }
  23. ?>
  24. </table>
  25. </body>
  26. </html>

结果如下图:
image.png

7.3 修改数据

(1)创建index.php

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>index</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <th>学号</th>
  11. <th>姓名</th>
  12. <th>年龄</th>
  13. <th>专业</th>
  14. <th colspan="2">操作</th>
  15. </tr>
  16. <?php
  17. include 'dbconn.php';
  18. $sql = "select sno,age,name,major from t_student";
  19. $rs = mysqli_query($conn,$sql);
  20. // 循环将结果集返回到数组中,从而获取表中所有数据记录
  21. while($arr = mysqli_fetch_array($rs)) {
  22. echo "<tr>
  23. <td>$arr[sno]</td>
  24. <td>$arr[name]</td>
  25. <td>$arr[age]</td>
  26. <td>$arr[major]</td>
  27. <td><a href='update.php?sno=$arr[sno]'>修改</a></td>
  28. <td><a href='doDelete.php?sno=$arr[sno]'>删除</a></td>
  29. </tr>";
  30. }
  31. ?>
  32. </table>
  33. </body>
  34. </html>

效果如下:
image.png
(2)创建update.php

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>修改数据</title>
  6. </head>
  7. <body>
  8. <?php
  9. include 'dbconn.php';
  10. // 获取要修改信息的学生学号
  11. $sno = $_GET['sno'];
  12. // 编写修改sql语句
  13. $sql = "select sno,age,name,major from t_student where sno=$sno";
  14. $rs = mysqli_query($conn,$sql); // 执行sql语句
  15. $arr = mysqli_fetch_array($rs); // 将结果集返回到数组中
  16. ?>
  17. <form action="doUpdate.php" method="post">
  18. <div>学号:<input readonly type="text" name="sno" value="<?php echo $arr['sno'] ?>"></div>
  19. <div>姓名:<input type="text" name="name" value="<?php echo $arr['name'] ?>"></div>
  20. <div>年龄:<input type="text" name="age" value="<?php echo $arr['age'] ?>"></div>
  21. <div>专业:<input type="text" name="major" value="<?php echo $arr['major'] ?>"></div>
  22. <input type="submit" value="修改">
  23. </form>
  24. </body>
  25. </html>

(3)创建doUpdate.php

  1. <?php
  2. include 'dbconn.php';
  3. $sno = $_POST['sno'];
  4. $name = $_POST['name'];
  5. $age = $_POST['age'];
  6. $major = $_POST['major'];
  7. $sql = "update t_student set name='$name', age=$age, major='$major' where sno=$sno";
  8. $rs = mysqli_query($conn, $sql);
  9. if($rs) {
  10. echo "<script>alert('修改成功');location.href='index.php';</script>";
  11. } else {
  12. echo "<script>alert('修改失败');location.href='index.php';</script>";
  13. }

(4)测试
image.png
从index.php点击某个学生的修改后,进入到修改页面,如下图所示image.png
在修改页面点击修改后
image.png
再查看数据库中是否已经成功修改数据。

7.4 删除数据

创建doDelete.php

  1. <?php
  2. include 'dbconn.php';
  3. $sno = $_GET['sno'];
  4. $sql = "delete from t_student where sno=$sno";
  5. $rs = mysqli_query($conn, $sql);
  6. if($rs) {
  7. echo "<script>alert('删除成功');location.href='index.php';</script>";
  8. } else {
  9. echo "<script>alert('删除失败');location.href='index.php';</script>";
  10. }

在index.php页面中的某一个学生点击删除,删除成功后如下图所示:
image.png