一. 数据库操作

DDL:

DML: insesrt update,delete

DQL: select

1 更新数据

  1. update tableName set field = newValue; // 更新全表数据
  2. update tableName set field = newValue while condition; // 更新满足条件的数据

2. 删除数据 delete

  1. delete from tableName;
  2. delete from tableName where condition;

3. 删除数据 truncate

  1. truncate tableName;

4. delete 和 truncate 的区别

1、truncate 命令的执行速度,快于 delete 命令。

2、delete 命令删除记录时,会记录大量的日志信息。

3、truncate 命令删除记录后,会恢复 auto_increment 默认值。

4、通过事务,无法恢复 truncate 命令删除的记录。

5.插入单条完整记录

  1. insert into tableName values(value1, value2,....);

注意:插入数据时,值和表中字段列需要一一对应.

6. 插入单条指定字段数据的记录

  1. insert into tableName(field1, field2,...) values(value1, value2,....);

注意: 查询时指定的字段和值需要一一对应.

7. 插入多条记录

全字段完整记录

  1. insert into tableName values(value1, value2,....),(value1, value2,....),...;

指定字段的记录

  1. insert into tableName(field1, field2,...) values (value1, value2,....),(value1, value2,....),...;

二.PDO操作

PHP 中,所有对数据的增删改操作,都使用 exec()方法执行

  1. int PDO::exec(String sql);

三.案例练习(班级信息增删改)

classList.php

  1. <?php
  2. header("content-type:text/html;charset=utf8");
  3. // 连接数据库
  4. $url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";
  5. $user = "lesson_32091_14_11223";
  6. $passwd = "95a08403e5048dcfc27bfd7425cf55ff";
  7. $db = new PDO($url,$user,$passwd);
  8. // 判断请求中是否有参数,如果有就是执行删除操作
  9. if(isset($_GET['name'])) {
  10. // 如果存在请求参数,取出并拼接SQL语句
  11. $sql = "delete from class where name = '{$_GET['name']}'";
  12. echo $sql;
  13. // 执行SQL
  14. $row = $db->exec($sql);
  15. // 如果执行结果影响行数大于0,说明操作成功
  16. if($row > 0){
  17. // 弹出弹框,并重定向到当前页面,目的是去除到页面中的请求参数
  18. echo "<script type='text/javascript'>alert('删除成功'); window.location='classList.php'</script>";
  19. }
  20. else
  21. echo "<script type='text/javascript'>alert('删除失败');</script>";
  22. }
  23. // 查询所有数据,包括在删除操作后的结果查询
  24. // 所以先判断是否应该删除,然后再查询结果
  25. $sql = "select * from class";
  26. $st = $db->query($sql);
  27. $res = $st->fetchAll(PDO::FETCH_ASSOC);
  28. ?>
  29. <!DOCTYPE html>
  30. <html lang="en">
  31. <head>
  32. <meta charset="UTF-8">
  33. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  34. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  35. <title>Document</title>
  36. <style>
  37. *{
  38. margin: 0;
  39. }
  40. #content{
  41. width:1200px;
  42. margin:0 auto;
  43. background: #f2f2f2;
  44. text-align: center;
  45. }
  46. table{
  47. border-collapse: collapse;
  48. text-align: center;
  49. margin: 0 auto;
  50. }
  51. tr,th,td{
  52. border:1px solid black;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <div id='content'>
  58. <h1>班级信息管理</h1>
  59. <table width='800px'>
  60. <tr>
  61. <th>班级名称</th>
  62. <th>班级人数</th>
  63. <th>操作</th>
  64. </tr>
  65. <?php foreach ($res as $value) { ?>
  66. <tr>
  67. <td> <?php echo $value['name']; ?></td>
  68. <td><?php echo rand(30,50) . "人"?></td>
  69. <td>
  70. <span>
  71. <a href=<?php echo "upDataClass.php?name={$value['name']}";?> >修改</a>
  72. </span>
  73. <span>
  74. <a href=<?php echo "classList.php?name={$value['name']}";?> >删除</a>
  75. </span>
  76. </td>
  77. </tr>
  78. <?php } ?>
  79. </table>
  80. </div>
  81. </body>
  82. </html>

upDataClass.php

  1. <?php
  2. // 获取参数中的旧班级名
  3. $name = $_GET['name'];
  4. echo "oldName:", $name;
  5. //
  6. if(isset($_GET['newname'])){
  7. $newname = $_GET['newname'];
  8. $num = $_GET['num'];
  9. // 判断输入的人数是否是数字
  10. if(strlen($newname) > 0 && is_numeric($num)){
  11. header("content-type:text/html;charset=utf8");
  12. // 连接数据库
  13. $url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";
  14. $user = "lesson_32091_14_11223";
  15. $passwd = "95a08403e5048dcfc27bfd7425cf55ff";
  16. $db = new PDO($url,$user,$passwd);
  17. // 修改数据
  18. $sql = "update class set name='{$newname}' where name = '{$name}'";
  19. echo $sql;
  20. $row = $db->exec($sql);
  21. // 判断是否修改成功
  22. if($row > 0){
  23. echo "<script>alert('修改成功'); window.location='classList.php';</script>";
  24. }else{
  25. echo "<script>alert('修改失败'); '</script>";
  26. }
  27. }else{
  28. echo "<script>alert('输入数据不合法'); </script>";
  29. }
  30. }
  31. ?>
  32. <!DOCTYPE html>
  33. <html lang="en">
  34. <head>
  35. <meta charset="UTF-8">
  36. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  37. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  38. <title>Document</title>
  39. <style>
  40. *{
  41. margin: 0;
  42. }
  43. body{
  44. background: #f2f2f2;
  45. }
  46. #content{
  47. width:500px;
  48. margin:0 auto;
  49. background: #f2f2f2;
  50. text-align: center;
  51. border: 1px solid orange;
  52. margin-top: 100px;
  53. padding: 30px;
  54. }
  55. h1{
  56. margin-bottom: 20px;
  57. }
  58. span{
  59. display: inline-block;
  60. width:100px;
  61. height: 30px;
  62. text-align: left;
  63. }
  64. .inp{
  65. width:200px;
  66. height: 30px;
  67. }
  68. .btn{
  69. width:100px;
  70. height: 30px;
  71. background: blue;
  72. color:white;
  73. border-radius:5px;
  74. }
  75. p{
  76. height: 60px;
  77. }
  78. </style>
  79. </head>
  80. <body>
  81. <div id="content">
  82. <h1>修改班级信息</h1>
  83. <form action="upDataClass.php">
  84. <!--因为使用get方式传参数时,指定地址后不能写参数字符串
  85. 所以解决办法,要么将提交方式改成post,要么使用隐藏域的方式 -->
  86. <!--下面添加一个隐藏域标签,在页面渲染时不显示,但是提交时会将数据一起提交上去-->
  87. <input type='hidden' name='name' value="<?php echo $name;?>" >
  88. <p>
  89. <span class='title'>班级名称:</span>
  90. <input class='inp' type="text" placeholder="请输入班级名称" name='newname'>
  91. </p>
  92. <p>
  93. <span class='title'>人数:</span>
  94. <input class='inp' type="text" placeholder="请输入班级人数" name='num'>
  95. </p>
  96. <input class='btn' type='submit' value="修改">
  97. </form>
  98. </div>
  99. </body>
  100. </html>

addClass.php

  1. <?php
  2. if(isset($_GET['newname'])){
  3. $newname = $_GET['newname'];
  4. $num = $_GET['num'];
  5. // 判断输入的人数是否是数字
  6. if(strlen($newname) > 0 && is_numeric($num)){
  7. header("content-type:text/html;charset=utf8");
  8. // 连接数据库
  9. $url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";
  10. $user = "lesson_32091_14_11223";
  11. $passwd = "95a08403e5048dcfc27bfd7425cf55ff";
  12. $db = new PDO($url,$user,$passwd);
  13. // 修改数据
  14. $sql = "insert into class(name) values('{$newname}')";
  15. echo $sql;
  16. $row = $db->exec($sql);
  17. // 判断是否修改成功
  18. if($row > 0){
  19. echo "<script>alert('添加成功'); window.location='classList.php';</script>";
  20. }else{
  21. echo "<script>alert('添加操作失败'); '</script>";
  22. }
  23. }else{
  24. echo "<script>alert('输入数据不合法'); </script>";
  25. }
  26. }
  27. ?>
  28. <!DOCTYPE html>
  29. <html lang="en">
  30. <head>
  31. <meta charset="UTF-8">
  32. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  33. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  34. <title>Document</title>
  35. <style>
  36. *{
  37. margin: 0;
  38. }
  39. body{
  40. background: #f2f2f2;
  41. }
  42. #content{
  43. width:500px;
  44. margin:0 auto;
  45. background: #f2f2f2;
  46. text-align: center;
  47. border: 1px solid orange;
  48. margin-top: 100px;
  49. padding: 30px;
  50. }
  51. h1{
  52. margin-bottom: 20px;
  53. }
  54. span{
  55. display: inline-block;
  56. width:100px;
  57. height: 30px;
  58. text-align: left;
  59. }
  60. .inp{
  61. width:200px;
  62. height: 30px;
  63. }
  64. .btn{
  65. width:100px;
  66. height: 30px;
  67. background: blue;
  68. color:white;
  69. border-radius:5px;
  70. }
  71. p{
  72. height: 60px;
  73. }
  74. </style>
  75. </head>
  76. <body>
  77. <div id="content">
  78. <h1>修改班级信息</h1>
  79. <form action="addClass.php">
  80. <p>
  81. <span class='title'>班级名称:</span>
  82. <input class='inp' type="text" placeholder="请输入班级名称" name='newname'>
  83. </p>
  84. <p>
  85. <span class='title'>人数:</span>
  86. <input class='inp' type="text" placeholder="请输入班级人数" name='num'>
  87. </p>
  88. <input class='btn' type='submit' value="修改">
  89. </form>
  90. </div>
  91. </body>
  92. </html>