一. 数据库操作
DDL:
DML: insesrt update,delete
DQL: select
1 更新数据
update tableName set field = newValue; // 更新全表数据或update tableName set field = newValue while condition; // 更新满足条件的数据
2. 删除数据 delete
delete from tableName;delete from tableName where condition;
3. 删除数据 truncate
truncate tableName;
4. delete 和 truncate 的区别
1、truncate 命令的执行速度,快于 delete 命令。
2、delete 命令删除记录时,会记录大量的日志信息。
3、truncate 命令删除记录后,会恢复 auto_increment 默认值。
4、通过事务,无法恢复 truncate 命令删除的记录。
5.插入单条完整记录
insert into tableName values(value1, value2,....);
注意:插入数据时,值和表中字段列需要一一对应.
6. 插入单条指定字段数据的记录
insert into tableName(field1, field2,...) values(value1, value2,....);
注意: 查询时指定的字段和值需要一一对应.
7. 插入多条记录
全字段完整记录
insert into tableName values(value1, value2,....),(value1, value2,....),...;
指定字段的记录
insert into tableName(field1, field2,...) values (value1, value2,....),(value1, value2,....),...;
二.PDO操作
PHP 中,所有对数据的增删改操作,都使用 exec()方法执行
int PDO::exec(String sql);
三.案例练习(班级信息增删改)
classList.php
<?phpheader("content-type:text/html;charset=utf8");// 连接数据库$url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";$user = "lesson_32091_14_11223";$passwd = "95a08403e5048dcfc27bfd7425cf55ff";$db = new PDO($url,$user,$passwd);// 判断请求中是否有参数,如果有就是执行删除操作if(isset($_GET['name'])) {// 如果存在请求参数,取出并拼接SQL语句$sql = "delete from class where name = '{$_GET['name']}'";echo $sql;// 执行SQL$row = $db->exec($sql);// 如果执行结果影响行数大于0,说明操作成功if($row > 0){// 弹出弹框,并重定向到当前页面,目的是去除到页面中的请求参数echo "<script type='text/javascript'>alert('删除成功'); window.location='classList.php'</script>";}elseecho "<script type='text/javascript'>alert('删除失败');</script>";}// 查询所有数据,包括在删除操作后的结果查询// 所以先判断是否应该删除,然后再查询结果$sql = "select * from class";$st = $db->query($sql);$res = $st->fetchAll(PDO::FETCH_ASSOC);?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;}#content{width:1200px;margin:0 auto;background: #f2f2f2;text-align: center;}table{border-collapse: collapse;text-align: center;margin: 0 auto;}tr,th,td{border:1px solid black;}</style></head><body><div id='content'><h1>班级信息管理</h1><table width='800px'><tr><th>班级名称</th><th>班级人数</th><th>操作</th></tr><?php foreach ($res as $value) { ?><tr><td> <?php echo $value['name']; ?></td><td><?php echo rand(30,50) . "人"?></td><td><span><a href=<?php echo "upDataClass.php?name={$value['name']}";?> >修改</a></span><span><a href=<?php echo "classList.php?name={$value['name']}";?> >删除</a></span></td></tr><?php } ?></table></div></body></html>
upDataClass.php
<?php// 获取参数中的旧班级名$name = $_GET['name'];echo "oldName:", $name;//if(isset($_GET['newname'])){$newname = $_GET['newname'];$num = $_GET['num'];// 判断输入的人数是否是数字if(strlen($newname) > 0 && is_numeric($num)){header("content-type:text/html;charset=utf8");// 连接数据库$url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";$user = "lesson_32091_14_11223";$passwd = "95a08403e5048dcfc27bfd7425cf55ff";$db = new PDO($url,$user,$passwd);// 修改数据$sql = "update class set name='{$newname}' where name = '{$name}'";echo $sql;$row = $db->exec($sql);// 判断是否修改成功if($row > 0){echo "<script>alert('修改成功'); window.location='classList.php';</script>";}else{echo "<script>alert('修改失败'); '</script>";}}else{echo "<script>alert('输入数据不合法'); </script>";}}?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;}body{background: #f2f2f2;}#content{width:500px;margin:0 auto;background: #f2f2f2;text-align: center;border: 1px solid orange;margin-top: 100px;padding: 30px;}h1{margin-bottom: 20px;}span{display: inline-block;width:100px;height: 30px;text-align: left;}.inp{width:200px;height: 30px;}.btn{width:100px;height: 30px;background: blue;color:white;border-radius:5px;}p{height: 60px;}</style></head><body><div id="content"><h1>修改班级信息</h1><form action="upDataClass.php"><!--因为使用get方式传参数时,指定地址后不能写参数字符串所以解决办法,要么将提交方式改成post,要么使用隐藏域的方式 --><!--下面添加一个隐藏域标签,在页面渲染时不显示,但是提交时会将数据一起提交上去--><input type='hidden' name='name' value="<?php echo $name;?>" ><p><span class='title'>班级名称:</span><input class='inp' type="text" placeholder="请输入班级名称" name='newname'></p><p><span class='title'>人数:</span><input class='inp' type="text" placeholder="请输入班级人数" name='num'></p><input class='btn' type='submit' value="修改"></form></div></body></html>
addClass.php
<?phpif(isset($_GET['newname'])){$newname = $_GET['newname'];$num = $_GET['num'];// 判断输入的人数是否是数字if(strlen($newname) > 0 && is_numeric($num)){header("content-type:text/html;charset=utf8");// 连接数据库$url = "mysql:host=mysql;dbname=database_lesson_32091_14_11223";$user = "lesson_32091_14_11223";$passwd = "95a08403e5048dcfc27bfd7425cf55ff";$db = new PDO($url,$user,$passwd);// 修改数据$sql = "insert into class(name) values('{$newname}')";echo $sql;$row = $db->exec($sql);// 判断是否修改成功if($row > 0){echo "<script>alert('添加成功'); window.location='classList.php';</script>";}else{echo "<script>alert('添加操作失败'); '</script>";}}else{echo "<script>alert('输入数据不合法'); </script>";}}?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;}body{background: #f2f2f2;}#content{width:500px;margin:0 auto;background: #f2f2f2;text-align: center;border: 1px solid orange;margin-top: 100px;padding: 30px;}h1{margin-bottom: 20px;}span{display: inline-block;width:100px;height: 30px;text-align: left;}.inp{width:200px;height: 30px;}.btn{width:100px;height: 30px;background: blue;color:white;border-radius:5px;}p{height: 60px;}</style></head><body><div id="content"><h1>修改班级信息</h1><form action="addClass.php"><p><span class='title'>班级名称:</span><input class='inp' type="text" placeholder="请输入班级名称" name='newname'></p><p><span class='title'>人数:</span><input class='inp' type="text" placeholder="请输入班级人数" name='num'></p><input class='btn' type='submit' value="修改"></form></div></body></html>
