PHP课堂--实验6

实验六 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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值