一、考试说明
- 题型 :综合应用题(上机填空,20分) ,给出不完整
.php网页代码,删除下划线补全语句,不能修改其他代码 - 环境 :WAMP5.0+、MySQL5.5,PHP使用旧mysql扩展(面向过程,试卷统一这套函数,不考mysqli)
- 固定业务流程:表单提交 → PHP接收表单数据 → 连接MySQL → 执行SQL(增/删/改/查) → 循环输出表格 → 关闭连接
- 试卷固定标记 :
//********found********下方为填空下划线位置
二、核心模块拆解 + 对应解题思路(按代码出现顺序)
模块 1:HTML 表单部分(第一处填空高频)
常考填空点:form 标签 method 属性
html
<form method="____" action="">
解题思路:
- 考试所有表单统一使用
post提交,直接填post - 记忆区分:
$_POST对应method="post",$_GET对应get,考题不会考get - 次要考点:input 标签
name="xxx",PHP 靠 name 取值,id 无任何作用,填空不会考,但看懂 name 才能后续接收数据
模块 2:数据库连接(几乎每道题第二个空)
标准模板代码:
php
$conn = mysql_connect("localhost","root","") or ____;
填空思路:
- 函数固定:
mysql_connect(主机,用户名,密码) or die("xxx")固定搭配:连接失败终止页面并提示,下划线一定填die("连接失败")- 衍生填空:如果空在函数名位置,直接填
mysql_connect
模块 3:选择数据库、设置字符集
php
mysql_select_db("库名",$conn);
mysql_set_charset("utf8",$conn);
解题思路:
mysql_select_db(数据库名,连接变量),库名题目会明确给出(如db_sc),直接抄mysql_set_charset("utf8",$conn)固定写法,防止中文乱码,极少填空,但要认识
模块 4:接收表单提交数据(必考填空)
php
$变量 = ____;
解题思路:
- 找到上方表单 input 标签里的
name="值",例如<input name="deptname"> - 固定语法:
$_POST["表单name值"] - 示例:
name="sno"→$_POST["sno"] - 坑点:引号不能丢,不能写
$_POST[sno](无引号考试判错)
模块 5:拼接 SQL 语句(增删改查通用)
php
$sql = "SELECT * FROM tb_student WHERE dept='".$dept."'";
解题思路:
-
PHP 字符串拼接符号是
.,不是+ -
SQL 里字符串条件必须用单引号包裹变量,格式固定:
'".$变量."' -
UPDATE 题型填空高频:
phpUPDATE 表 SET 字段1='".$val1."',____ WHERE 条件下划线填:
字段2='".$val2."',直接复制前面格式替换字段名即可
模块 6:执行 SQL 语句(固定填空)
php
$res = ____;
解题思路:
- 执行 SQL 唯一函数:
mysql_query($sql,$conn) - 参数顺序:第一个是拼接好的
$sql,第二个是数据库连接变量$conn - 无论 SELECT/INSERT/UPDATE/DELETE,全部用这个函数,无其他替代函数
模块 7:读取结果集、循环输出表格(分值最高)
场景 1:循环多条数据(查询列表)
php
while(____){
echo "<tr><td>".$row["sno"]."</td></tr>";
}
填空标准答案 :$row = mysql_fetch_assoc($res)
解题思路:
mysql_fetch_assoc(结果集变量):取出一行数据,返回关联数组- 赋值给
$row,循环内用$row["表字段名"]输出单元格 - 固定循环结构:while 循环,不能用 for/if
场景 2:只查询单条数据(修改页面回填原数据)
php
$row = ____;
同样填:mysql_fetch_assoc($res),不需要 while
模块 8:收尾关闭数据库
php
mysql_close($conn);
极少填空,认识即可,参数是连接变量 $conn
三、PHP选择考点(选择题会出现)
- PHP标记:
<?php ... ?>,不能加空格 - 变量全部以
$开头,$conn、$sql、$row - 字符串连接符:
.不是+ die():输出提示并终止程序$_POST:接收post表单;$_GET接收地址栏参数- 数组取值:
$row["字段名"]中括号双引号/单引号均可
四、历年真题风格练习题(3套综合填空大题,带答案)
练习题1(样题原题:按院系查询学生选课表)
题干
数据库db_sc三张表:
- tb_student(sno,sname,dept) 学号、姓名、院系
- tb_course(cno,cname,credit) 课程号、课程名、学分
- tb_sc(sno,cno,score) 学号、课程号、成绩
页面功能:输入院系名称,查询该院所有学生选课信息,表格展示:学号、姓名、课程名、成绩、学分
文件sj3.php代码,补全found下划线处
php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>学生选课查询</title>
</head>
<body>
<h3 align="center">学生选课信息查询</h3>
<!--********found********-->
<form method="____1____" action="">
院系名称:<input type="text" name="deptname">
<input type="submit" value="查询">
</form>
<?php
//判断是否点击查询按钮提交表单
if(isset($_POST["deptname"])){
//********found********
$conn = mysql_connect("localhost","root","") or ____2____;
mysql_select_db("db_sc",$conn);
mysql_set_charset("utf8",$conn);
//接收表单院系值
//********found********
$dept = ____3____;
//多表联查SQL
$sql = "SELECT s.sno,s.name,c.cname,sc.score,c.credit
FROM tb_student s
JOIN tb_sc sc ON s.sno=sc.sno
JOIN tb_course c ON sc.cno=c.cno
WHERE s.dept = '".$dept."'";
//********found********
$res = ____4____;
echo "<table border='1' align='center'>
<tr><th>学号</th><th>姓名</th><th>课程名</th><th>成绩</th><th>学分</th></tr>";
//循环取出每行数据
//********found********
while(____5____){
echo "<tr>
<td>".$row["sno"]."</td>
<td>".$row["sname"]."</td>
<td>".$row["cname"]."</td>
<td>".$row["score"]."</td>
<td>".$row["credit"]."</td>
</tr>";
}
echo "</table>";
mysql_close($conn);
}
?>
</body>
</html>
填空答案
- post
- die("数据库连接失败")
- $_POST"deptname"
- mysql_query( s q l , sql, sql,conn)
- r o w = m y s q l f e t c h a s s o c ( row = mysql_fetch_assoc( row=mysqlfetchassoc(res)
练习题2(新增客户信息提交页面)
题干
数据库db_cus,客户表tb_cus(cid,name,sex,phone,email),页面表单输入客户信息,点击提交插入数据库
php
<!DOCTYPE html>
<html>
<body>
<h3>新增客户</h3>
<form method="post" action="">
客户编号:<input name="cid"><br>
姓名:<input name="cname"><br>
性别:<input name="sex"><br>
手机:<input name="phone"><br>
邮箱:<input name="email"><br>
<input type="submit" value="添加">
</form>
<?php
if(isset($_POST["cid"])){
//********found********
$link = ____1____("localhost","root","") or die("连接失败");
mysql_select_db("db_cus",$link);
mysql_set_charset("utf8",$link);
//接收所有表单数据
$cid = $_POST["cid"];
$name = $_POST["cname"];
$sex = $_POST["sex"];
$phone = $_POST["phone"];
$email = $_POST["email"];
//拼接插入SQL
//********found********
$sql = "INSERT INTO tb_cus(cid,name,sex,phone,email) VALUES('".$cid."','".$name."','".$sex."','".$phone."','".$email."')";
//执行SQL
//********found********
$result = mysql_query(____2____);
if($result){
echo "<p align='center'>客户添加成功!</p>";
}else{
echo "<p align='center'>添加失败</p>";
}
mysql_close($link);
}
?>
</body>
</html>
填空答案
- mysql_connect
- s q l , sql, sql,link
练习题3(学生信息查询与删除)
题干
数据库db_stu,学生表tb_stu(id,name,age,class),实现查询和删除功能
php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息管理</title>
</head>
<body>
<h3 align="center">学生信息查询与删除</h3>
<form method="post" action="">
班级:<input type="text" name="class">
<input type="submit" name="query" value="查询">
</form>
<hr>
<?php
if(isset($_POST["query"])){
//********found********
$conn = mysql_connect("localhost","root","") or ____1____;
mysql_select_db("db_stu",$conn);
mysql_set_charset("utf8",$conn);
//接收班级值
$class = $_POST["class"];
//查询SQL
$sql = "SELECT * FROM tb_stu WHERE class = '".$class."'";
//********found********
$result = ____2____;
echo "<table border='1' align='center'>
<tr><th>ID</th><th>姓名</th><th>年龄</th><th>班级</th><th>操作</th></tr>";
//********found********
while($row = ____3____){
echo "<tr>
<td>".$row["id"]."</td>
<td>".$row["name"]."</td>
<td>".$row["age"]."</td>
<td>".$row["class"]."</td>
<td><a href='delete.php?id=".$row["id"]."'>删除</a></td>
</tr>";
}
echo "</table>";
mysql_close($conn);
}
?>
</body>
</html>
填空答案
- die("连接失败")
- mysql_query( s q l , sql, sql,conn)
- mysql_fetch_assoc($result)
五、备考技巧与注意事项
- 先看整体流程:先理解整个页面的业务逻辑,再填空
- 注意函数参数顺序:mysql_connect(主机,用户名,密码)
- 字符串拼接用点号 :PHP中字符串连接用
.,不是+ - SQL变量加引号:SQL语句中的变量要用单引号包裹
- 表单name属性 :PHP通过
$_POST["name属性"]接收数据 - 循环输出格式 :while循环内用
$row["字段名"]取值 - 关闭连接 :最后一定要有
mysql_close($conn)
六、常见错误分析
- 函数名写错:mysql_connect写成mysql_connet
- 参数顺序错:mysql_connect("root","localhost","")
- 缺少连接句柄:mysql_query($sql)缺少第二个参数
- 字符串连接错 :用
+连接字符串 - SQL引号缺失 :
WHERE dept = $dept应为WHERE dept = '".$dept."' - POST接收错 :
$_POST[deptname]应为$_POST["deptname"]
七、考试做题固定步骤(拿分技巧)
- 先看题目业务:查 / 增 / 改 / 删,确定 SQL 类型
- 按填空顺序记忆固定模板 :
- ① 连接数据库:
mysql_connect(...) or die(...) - ② 选库:
mysql_select_db(库名,$连接) - ③ 接收表单:
$_POST["输入框name"] - ④ 执行 SQL:
mysql_query($sql,$连接) - ⑤ 遍历结果:
while($row=mysql_fetch_assoc($结果集))
- ① 连接数据库:
- 表单 method 固定填
post(试卷全部表单都是 post) - SQL 更新、插入语句字段用
.拼接变量,外层单引号包裹 - 不修改 found 标记、不删除原有代码,只替换下划线内容
掌握以上考点和练习题,二级MySQL PHP综合应用题就能轻松应对!