PHP课堂--实验6
来源:互联网 发布:埋雷 软件 编辑:程序博客网 时间:2024/06/07 10:15
实验六 PHP中的数据库操作和字符串操作
实验目的:
掌握PHP中数据库的基本操作,包括数据库的创建,数据表的创建,信息的增加,删除,修改,查询等操作。
掌握PHP中字符串相关函数的应用
实验内容:
1、 数据库的基本操作(创建一个学生数据库,要求写在.php文件中编写代码,通过执行php文件实现)
1) 创建数据库
<?php $conn = mysql_connect("localhost", "root", "wwj");//判断数据库是否存在if(!$conn){die('Could not connect:'.mysql_error());}//创建数据库if(mysql_query("create database stu_db",$conn)){echo "Database created";}else{echo "Error created Database:".mysql_error();}mysql_close($conn);?>
2) 创建数据库表(三张表:学生表(学号,姓名,性别,年龄,出生日期等,学号为主键),课程(课程号,课程名,学生,课程号为主键)和分数(学号,姓名,分数,学号和姓名为主键)
<?php$conn = mysql_connect("localhost","root", "wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }//选择数据库mysql_select_db("stu_db",$conn);$sql = "create table Student(StuNumber varchar(10),StuName varchar(20),StuSex char(1),StuAge int,Stubirth date,primary key(StuNumber))";mysql_query($sql, $conn);$sql = "create table Course(CourseNumber varchar(10),CourseName varchar(20),Coursexuefen int,primary key(CourseNumber))";mysql_query($sql, $conn);$sql = "create table Grade(StuNumber varchar(10),CourseNumber varchar(10),CourseGrade int,primary key(StuNumber,CourseNumber))";mysql_query($sql, $conn);?>
3) 分别在三张表中插入数据(两种插入数据的方式,一种是直接在php文件中执行sql插入语句,第二种方式是通过html页面填写需要插入到数据库中的信息,然后将信息插入到数据库中,运用这两种方式后,都要检查是否将记录成功插入到数据库中)
<?php$conn = mysql_connect("localhost","root","wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }mysql_select_db("stu_db", $conn);$sql = ("INSERT INTO student (StuNumber, StuName,StuSex, StuAge,Stubirth) VALUES ('2100000003', 'zhang', '1',20, '19000304')");mysql_query($sql,$conn);$sql1 = ("INSERT INTO course (CourseNumber, CourseName,Coursexuefen) VALUES ('00003', 'computer', 3)");mysql_query($sql1,$conn);$sql2 = ("INSERT INTO grade (StuNumber ,CourseNumber,CourseGrade) VALUES ('2100000001', '00003', 90)");mysql_query($sql2,$conn);mysql_close($conn);?>
<html><body><form action="" method="post">学号: <input type="text" name="StuNumber" />姓名: <input type="text" name="StuName" />性别: <input type="text" name="StuSex" />年龄: <input type="text" name="StuAge" />出生日期: <input type="text" name="Stubirth" /><input type="submit" value="提交" /></form></body></html><?php$conn = mysql_connect("localhost","root","wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }mysql_select_db("stu_db", $conn);$sql="INSERT INTO student(StuNumber, StuName,StuSex, StuAge,Stubirth)VALUES('$_POST[StuNumber]','$_POST[StuName]','$_POST[StuSex]','$_POST[StuAge]','$_POST[Stubirth]')";if (!mysql_query($sql,$conn)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($conn);?>
4) 将数据库的信息在页面中显示出来
<?php$conn = mysql_connect("localhost","root","wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }mysql_select_db("stu_db", $conn);$result = mysql_query("SELECT * FROM student");echo "<table border='1'><tr><th>学号</th><th>姓名</th><th>性别</th><th>年龄</th><th>出生日期</th></tr>";while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['StuNumber'] . "</td>"; echo "<td>" . $row['StuName'] . "</td>"; echo "<td>" . $row['StuSex'] . "</td>"; echo "<td>" . $row['StuAge'] . "</td>"; echo "<td>" . $row['Stubirth'] . "</td>"; echo "</tr>"; }echo "</table>";mysql_close($conn);?>
5) 显示一个学生的学号,姓名,课程,课程学分和成绩
<?php$conn = mysql_connect("localhost","root","wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }mysql_select_db("stu_db", $conn);$result = mysql_query("SELECT Student.StuNumber,Student.StuName,Course.CourseName,Course.Coursexuefen,Grade.CourseGrade FROM Student,Course,Grade where Student.StuNumber=Grade.StuNumber and Course.CourseNumber=Grade.CourseNumber ");echo "<table border='1'><tr><th>学号</th><th>姓名</th><th>课程名</th><th>学分</th><th>分数</th></tr>";while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['StuNumber'] . "</td>"; echo "<td>" . $row['StuName'] . "</td>"; echo "<td>" . $row['CourseName'] . "</td>"; echo "<td>" . $row['Coursexuefen'] . "</td>"; echo "<td>" . $row['CourseGrade'] . "</td>"; echo "</tr>"; }echo "</table>";mysql_close($conn);?>
6) 更新和删除数据库中的记录
<?php$conn = mysql_connect("localhost","root","wwj");//判断数据库连接是否存在if (!$conn) { die('Could not connect: ' . mysql_error()); }mysql_select_db("stu_db", $conn);$sql = ("UPDATE student SET StuAge=22 WHERE StudentNumber='2100000003'");//$sql = ("DELETE FROM student WHERE StudentNumber='2100000001'");$row=mysql_query($sql,$conn);mysql_close($conn);?>
2、正则表达式的使用:设计一个PHP网页,其中验证表单数据的正确性,表单数据中包括用户名、密码、出生年月、E-mail。要求用户名为6-12个字符,密码为5-10数字,出生年月为有效的日期,E-mail为有效的Email地址。在服务器端进行验证。
提示:
1)preg_match() — 执行一个正则表达式匹配
int preg_match ( string $pattern , string$subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
pattern 要搜索的模式,字符串类型。
subject 输入字符串。
matches 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
例子:
preg_match("/^[A-Z]{10}$/",$e);// 确定e变量的内容是否为10个大写字母。
2)正则表达式:
正则表达式的形式一般如下:
/*******/
其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。
表1.常用的元字符
代码
说明
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
表2.常用的限定符
代码/语法
说明
*
重复零次或更多次
+
重复一次或更多次
?
重复零次或一次
{n}
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
较为常用的定位符包括: “^”, “$”, “\b” 以及“\B”。
“^”定位符规定匹配模式必须出现在目标字符串的开头,
“$”定位符规定匹配模式必须出现在目标对象的结尾
“|”,相当于OR操作:
[ ]符号表示可选的内容
例子:
/^\w+/ :匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置)
/fo+/
因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。
/jim{2,6}/
上述正则表达式规定字符m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。
/^hell/:字符串开头要是hell。
/ar$/:与目标对象中以“car”, “bar”或 “ar” 结尾的字符串相匹配。
“/(b|cd)ef/”: 匹配含有“bef”或者 “cdef”的字符串;
/[A-Z]/
从A到Z范围内任何一个大写字母相匹配。
3)弹出错误提示框的代码方法:
例子:
echo "<script>alert('Email格式错');</script>";
<html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> </head> <body> <form action="" method="post"> <table width="60%" border="1"> <tr> <td width="10%">用户名</td> <td width="50%"><input type="text" name="userid" size="20"></td> <td width="40%">* 6~12个字符(数字,字母和下划线)</td> </tr> <tr> <td >密码</td> <td ><input type="text" name="pwd" size="20"></td> <td >* 5~10数字</td> </tr> <tr> <td >出生年月</td> <td ><input type="text" name="birthday" size="20"></td> <td >* 格式:YYYY-MM-DD</td> </tr> <tr> <td >E-mail:</td> <td ><input type="text" name="email" size="20"></td> <td >* </td> </tr> <tr> <td> </td> <td><input type="submit" name="confirm" value="确定"></td> </tr> </table></form><?php if(isset($_POST['confirm'])){$userid=$_POST['userid'];$pwd=$_POST['pwd'];$birthday=$_POST['birthday'];$email=$_POST['email'];/*$userid="gdfghkdfhg";$pwd="894676";$birthday="4567-12-05";$email="fsjdhgj@hgsjdg";*/if(!preg_match("/^\w{6,12}$/",$userid)){echo "<script>alert('用户名格式错');</script>";}if(!preg_match("/^\d{5,10}$/",$pwd)){echo "<script>alert('密码格式错');</script>";}if(!preg_match("/^\d{4}-(0\d|1[0-3])-([012]\d|[3][01])$/",$birthday)){echo "<script>alert('出生日期格式错');</script>";}if(!preg_match("/^[\w-]+@[\w-.]+$/",$email)){echo "<script>alert('Email格式错');</script>";}}?> </body> </html>
- PHP课堂--实验6
- PHP课堂--实验1
- PHP课堂-实验2
- PHP课堂--实验3
- PHP课堂--实验4
- PHP课堂--实验5
- C++课堂实验6
- ASP.Net课堂--实验6
- C++第二次课堂实验
- C++课堂实验3
- C++课堂实验4
- C++课堂实验5
- ASP.Net课堂--实验2
- ASP.Net课堂--实验3
- ASP.Net课堂--实验4
- ASP.Net课堂--实验5
- 第一次实验课课堂笔记
- C++第一次课堂实验-2
- 【gooogleman组织】大家一起来diy 超低价四核的exynos4412或者Cortex A8 S5pv210开源开发板
- 在大灾大难面前,怎样使自己的站点变成灰色
- 二值图像连通域标记快速算法实现
- C语言中函数strcpy ,strncpy ,strlcpy的用法
- 面向对象的程序设计(内存分析)
- PHP课堂--实验6
- Mixing Milk
- 抽象工厂模式
- STL - Map
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 高性能计算机的发展
- Android开发中,有哪些点需要进行特别优化?
- 常用正则表达式
- 蔡勒公式