1MYSQL复习
新建一个数据库
Create database hlw2016;
删除一个数据库
Drop database hlw2016;
创建一个表
Create table student (
Id Int not null primary key,
Name varchar(20),
Sex varchar(20),
Class varchar(20)
)
插入一条数据
INSERT INTO `student`VALUES (3,'刘志雄',1402,'男');
查询数据
Select * from student;
SELECT class FROM student;
SELECT class AS '班级' FROM student
条件查询
SELECT * FROM `student` WHERE class =1401
更新数据
Update student set name=’钟奇奇’where name = ‘钟琪琪’;
删除数据
Delete from student where name = ‘黄志鹏’;
对查询结果进行分组
SELECT classFROM `student` GROUP BY class
对查询结果进行限定
Limit having
Limit :限定查询返回的记录条数。Limit 3 :表示的意思是显示查询结果中的前三条
Limit 0,30 :表示从查询结果中的第一行开始,返回10行记录。
Having:通常与group by一起使用 。having子句也用来设置某种产讯条件,与where不同的是,他在select语句查询出结果之后才开始做条件限定。
MySQL的数据类型
数据类型 | 说明 |
INT | 整型,整数值 |
Real | 浮点数值 |
Char | 定长字符类型 |
VARCHAR | 变长字符串 |
TEXT | 文本类型 |
DATE | 日期 |
TIME | 时间值 |
MYSQL中的运算符
运算符 | 说明 |
= | 比较运算符,比较两个值是否相等 |
!=或<> | 比较运算符,比较两个值是否不相等 |
< | 比较运算符,小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
+ | 算术运算符,求和 |
- | 求差 |
* | 求积 |
/ | 求商 |
AND | 逻辑运算符,与 |
OR | 或 |
NOT | 非 |
MYSQL中模式匹配
% 匹配任意数量的字符
*匹配*前面的字符的0个过多个,例子:cof*e 匹配的是coffe 、cofffe
^匹配的是^h后面的字符 例子^MySQL匹配的是 MySQL Guide、MySQL基础。
.匹配的是任意的单个字符 例子:.ike匹配的是like、bike、
MySQL中的函数
常用的函数有:
COUNT(),用来统计表中记录个数或这列中值得个数SELECT COUNT( * ) FROM `student`
MAX(),某列中的最大值
MIN(),某列中的最小值
SUM(),求和
AVG(),指定列的平均值
LENGTH(),计算字符串的长度
SUBSTRING(),截取子字符串
YEAR(),返回指定的日期的年份
UNIX_TIMESTAMP(),返回一个UNIX时间戳
DATA_FIRMAT(),将一个日期格式化
NOW(),返回的是MYSQL服务器系统的当前日期和时间。
2使用PHP操作MySQL数据库
2.1操作MySQL的php函数
Php访问MySQL数据库步骤:
上述的步骤中涉及到的操作MySQL的函数有:连接数据库和关闭数据库
在php中有这个函数mysql_connect()
mysql_connect($server, $username, $password, $new_link, $client_flags)
第一个参数:$server 代表的是连接的MySQL数据库服务器,可以给这个参数附加端口号。
第二个参数:$username 是连接MySQL服务器的用户名
第三个参数:$password 该用所使用的数据库密码
第四个参数:$new_link是可选参数,表示的是是否在下次使用同样的参数调用mysql_connect()时,建立一个与MySQL的新的连接,该参数是bool型变量
第五参数:$client_flags 表示客户端连接服务器的类型,几乎不用。
如果成功的建立了一个连接,mysql_connect()会返回一个MySQL的连接标识符,否则的话返回FALSE;
$conn = mysql_connect("localhost","root","123456");//建立数据库连接 mysql_close($conn);//关闭上面的连接 |
2.2执行SQL语句的函数
mysql_querry();
2.3处理查询结果集的函数
在php中,当一个SQL语句执行完毕后,通常需要对查询结果集做处理,处理的函数主要有:
mysql_affected_rows():取得前一次MySQL操作所影响的记录行数,如果执行成功,返回上一次SQL语句执行所影响的行数,否则返回-1;
mysql_fetch_row($result);参数$result是执行mysql_querry()之后返回的资源标识符。该函数从查询结果集中返回一行数据,该函数返回值是一个数组,其中每个元素对应一行结果记录的字段值。
mysql_fetch_array($result,$type); 参数$result是执行mysql_querry()之后返回的资源标识符。该函数从结果集中返回一行作为关联数组,$type这个参数用来指定返回数组的类型值(MYSQL_ASSOC、MYSQL_NUM、MYSQL_BOTH)
mysql_fetch_assoc($result); 参数$result是执行mysql_querry()之后返回的资源标识符。只不过函数枝江结果集作为关联数组返回。
2.4获取字段信息的函数
mysql_fetch_field($result); 参数$result是执行mysql_querry()之后返回的资源标识符。返回的是一个对象。对的属性有:
name:字段名
table:该字段所在的表明
max_length:该字段的最大长度
2.5数据库操作的其他函数
mysql_select_db($database_name);连接上数据库之后,可以使用该函数选择一个数据库。参数是所选择使用的数据库名;
mysql_num_rows($result);用来取得结果集的行数,记录数。
mysql_error();返回最近一次MYSQL操作所产生的错误文本信息,如果没有错,返回空字符串。
3使用PHP连接MYSQL数据库
3.1建立和数据库的连接
<?php $host = 'localhost';//定义服务器 $user_name = 'root';//定义用户名 $password = '123456';//定义密码
$conn = mysql_connect($host,$user_name,$password);
if(!$conn){ die('数据库连接失败:'.mysql_error()); }else {
echo "数据库连接成功!"; } |
3.2持久连接和临时连接
mysql_pconnect():会查找一个在同一主机上使用相同用户名和密码已经建立的连接,如果找到,该函数就返回此连接,而不是创建一个新的连接
当php的程序执行完毕之后,使用mysql_pconnect()建立的MYSQL连接不会被关闭,mysql_close()也不关闭。所以这个叫作持久连接。
3.3关闭连接
<?php $host = 'localhost';//定义服务器 $user_name = 'root';//定义用户名 $password = '123456';//定义密码
$conn = mysql_connect($host,$user_name,$password);
if(!$conn){ die('数据库连接失败:'.mysql_error()); }else {
echo "数据库连接成功!"; }
if(mysql_close($conn)){ echo "数据库的连接已经成功关闭!"; } |
4使用PHP显示MySQL中的数据
在PHP中建立了MySQL连接之后,执行SQL语句查询数据库中的数据,然后通过PHP处理查询到的结果集,或者通过整理将这些数据显示到web页面中。
4.1在PHP中执行SQL语句
要从数据库中获取数据,首先PHP要执行一条对表操作的SQL语句,包括SELECT、INSERT、UPDATE、DELETE。一般情况下,在php中执行select语句,会从表中查找出一些记录。
<?php $host = 'localhost'; // 定义我们的服务器 $user_name = 'root'; // 定义MySQL的用户名 $password = '123456'; // 密码
$conn = mysql_connect($host, $user_name, $password); // 与我们的MySQL连接上 // 判断有没有连接成功,如果失败的话,报出错误信息 if (! $conn) { die('数据库连接失败:' . mysql_error()); } // 连接成功以后,选择我们的数据库。 mysql_select_db('hlw2016'); // 定义我们的查询语句,注意,一般这里的语句先要在数据库中进行验证,有结果。 $sql = 'select id,name,class from student'; // 执行SQL语句,并且获取到我们的查询结果。 $result = mysql_query($sql); // 因为要是执行mysql_query函数发生错误的话,$result的值就是false。 if ($result) { echo 'SQL语句:' . $sql . '<br>已经执行成功!'; // 统计出这个SQL语句执行完毕后共有几条数据。 $num = mysql_num_rows($result); echo '<br>该SQL语句查询到' . $num . '条数据!'; } // 关闭数据库连接。 mysql_close($conn);
|
Mysql_error()函数与mysql_query()函数一起使用,当出现问题的时候把SQL语句的问题报出
<?php $host = 'localhost'; // 定义我们的服务器 $user_name = 'root'; // 定义MySQL的用户名 $password = '123456'; // 密码
$conn = mysql_connect($host, $user_name, $password); // 与我们的MySQL连接上 // 判断有没有连接成功,如果失败的话,报出错误信息 if (! $conn) { die('数据库连接失败:' . mysql_error()); } // 连接成功以后,选择我们的数据库。 mysql_select_db('hlw2016'); // 定义我们的查询语句,注意,一般这里的语句先要在数据库中进行验证,有结果。 $sql = 'select id,name,class from studen'; // 执行SQL语句,并且获取到我们的查询结果。 $result = mysql_query($sql) or die("<br>ERROR:".mysql_error()."<br>产生问题的SQL语句是".$sql); // 因为要是执行mysql_query函数发生错误的话,$result的值就是false。 if ($result) { echo 'SQL语句:' . $sql . '<br>已经执行成功!'; // 统计出这个SQL语句执行完毕后共有几条数据。 $num = mysql_num_rows($result); echo '<br>该SQL语句查询到' . $num . '条数据!'; } // 关闭数据库连接。 mysql_close($conn);
|
输出结果集中的第一行数据
<?php $host = 'localhost'; // 定义我们的服务器 $user_name = 'root'; // 定义MySQL的用户名 $password = '123456'; // 密码
$conn = mysql_connect($host, $user_name, $password); // 与我们的MySQL连接上 // 判断有没有连接成功,如果失败的话,报出错误信息 if (! $conn) { die('数据库连接失败:' . mysql_error()); } // 连接成功以后,选择我们的数据库。 mysql_select_db('hlw2016'); // 定义我们的查询语句,注意,一般这里的语句先要在数据库中进行验证,有结果。 $sql = 'select id,name,class from student'; // 执行SQL语句,并且获取到我们的查询结果。 $result = mysql_query($sql) or die("<br>ERROR:" . mysql_error() . "<br>产生问题的SQL语句是" . $sql); // 因为要是执行mysql_query函数发生错误的话,$result的值就是false。 if ($num = mysql_num_rows($result)) { // 将结果集中的一行作为数组返回 echo "<pre>"; $row = mysql_fetch_array($result); print_r($row); }
// if ($result) { // echo 'SQL语句:' . $sql . '<br>已经执行成功!'; // // 统计出这个SQL语句执行完毕后共有几条数据。 // $num = mysql_num_rows($result); // echo '<br>该SQL语句查询到' . $num . '条数据!'; // } // 关闭数据库连接。 mysql_close($conn);
|
输出结果集中的所有数据
<?php $host = 'localhost'; // 定义我们的服务器 $user_name = 'root'; // 定义MySQL的用户名 $password = '123456'; // 密码
$conn = mysql_connect($host, $user_name, $password); // 与我们的MySQL连接上 // 判断有没有连接成功,如果失败的话,报出错误信息 if (! $conn) { die('数据库连接失败:' . mysql_error()); } // 连接成功以后,选择我们的数据库。 mysql_select_db('hlw2016'); // 定义我们的查询语句,注意,一般这里的语句先要在数据库中进行验证,有结果。 $sql = 'select id,name,class from student'; // 执行SQL语句,并且获取到我们的查询结果。 $result = mysql_query($sql) or die("<br>ERROR:" . mysql_error() . "<br>产生问题的SQL语句是" . $sql); // 因为要是执行mysql_query函数发生错误的话,$result的值就是false。 if ($num = mysql_num_rows($result)) { // 将结果集中的一行作为数组返回
echo "<pre>"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { print_r($row); } }
// if ($result) { // echo 'SQL语句:' . $sql . '<br>已经执行成功!'; // // 统计出这个SQL语句执行完毕后共有几条数据。 // $num = mysql_num_rows($result); // echo '<br>该SQL语句查询到' . $num . '条数据!'; // } // 关闭数据库连接。 mysql_close($conn);
|
4.2向web页面中显示数据
上面的例子中已经将结果显示在web页面中了,但是并不符合开发需求,显示出来的仅仅是我们的一个数组,接下来我们来完善一下这个输出。
<?php $host = 'localhost'; // 定义我们的服务器 $user_name = 'root'; // 定义MySQL的用户名 $password = '123456'; // 密码
$conn = mysql_connect($host, $user_name, $password); // 与我们的MySQL连接上 // 判断有没有连接成功,如果失败的话,报出错误信息 if (! $conn) { die('数据库连接失败:' . mysql_error()); } // 连接成功以后,选择我们的数据库。 mysql_select_db('hlw2016'); // 定义我们的查询语句,注意,一般这里的语句先要在数据库中进行验证,有结果。 $sql = 'select id,name,class from student'; // 执行SQL语句,并且获取到我们的查询结果。 mysql_query("SET NAMES UTF-8"); $result = mysql_query($sql) or die("<br>ERROR:" . mysql_error() . "<br>产生问题的SQL语句是" . $sql); // 因为要是执行mysql_query函数发生错误的话,$result的值就是false。 ?> <html> <head> <meta chatset='utf-8'> <title>向WEB中显示数据</title> </head> <body>
<table width="75%" border=1> <tr> <td>ID</td> <td>name</td> <td>class</td> </tr> <?php
if ($num = mysql_num_rows($result)) { // 将结果集中的一行作为数组返回
echo "<pre>"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
?> <tr> <td><?php echo $row['id'];?></td> <td><?php echo iconv("gbk", "utf-8", $row['name']) ;?></td> <td><?php echo $row['class'];?></td>
</tr> <?php } } // if ($result) { // echo 'SQL语句:' . $sql . '<br>已经执行成功!'; // // 统计出这个SQL语句执行完毕后共有几条数据。 // $num = mysql_num_rows($result); // echo '<br>该SQL语句查询到' . $num . '条数据!'; // } // 关闭数据库连接。 mysql_close($conn);
?> </table> </body> </html> |
分页显示
<?php $host = 'localhost'; $user_name = 'root'; $password = '123456';
$conn = mysql_connect($host, $user_name, $password); if (! $conn) {
die('数据库连接失败:' . mysql_error()); }
mysql_select_db('hlw2016');
if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 1; }
$page_size = 2;
$sql = "select id, name, class from student";
$result = mysql_query($sql);
$total = mysql_num_rows($result);
if ($total) { if ($total < $page_size) { $page_count = 1; } if ($total % $page_size) { $page_count = (int) ($total / $page_size) + 1; } else { $page_count = $total / $page_size; } } else { $page_count = 0; }
$turn_page = ''; if ($page == 1) { $turn_page .= '首页|上一页'; } else { $turn_page .= '<a href = demo4.php?page=1>首页</a>|<a href = demo4.php?page=' . ($page - 1) . '>上一页</a>|'; }
if ($page == $page_count || $page_count == 0) { $turn_page .= '下一页|尾页'; } else { $turn_page .= '<a href=demo4.php?page=' . ($page + 1) . '>下一页</a>|<a href = demo4.php?page='.$page_count.'>尾页</a>'; }
$sql = 'select id,name,class from student limit ' . ($page - 1) * $page_size . ',' . $page_size;
$result = mysql_query($sql) or die("<br>执行SQL语句的时候发生错误," . mysql_error() . "<br>发生错误的SQL语句是:" . $sql);
if ($num = mysql_num_rows($result)) {
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>PHP分页显示</title> </head>
<body> <table width="75%" border="1" cellpadding="20px" cellspacing="0"> <tr> <th>id</th> <th>name</th> <th>class</th> </tr> <?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ?> <tr> <td><?php echo $row['id']?></td> <td><?php echo iconv("GBK", "UTF-8", $row['name'])?></td> <td><?php echo $row['class']?></td> </tr> <?php } } echo $turn_page; mysql_close($conn); ?> </table> </body> </html> |
4.3使用PHP维护MySQL数据库的数据
4.3.1增——从页面中获取数据并且插入到数据库中
首先我们建立一个表单
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>注册</title>
</head> <body>
<form action="demo1.php" method="post" name="form"> <table width="75%" border="1" cellpadding="20px" cellspacing="0"> <tr> <td>id</td> <td><input id="id" type="text" name="id"></td> </tr> <tr> <td>name</td> <td><input id="name" type="text" name="name"></td> </tr> <tr> <td>class</td> <td><select id="class" name="class"> <option value="1401">1401</option> <option value="1402">1402</option> </select></td> </tr> <tr> <td>sex</td> <td><input id="sex" type="radio" name="sex" value="男">男 <input type="radio" id="sex1" name="sex" value="女">女</td> </tr> <tr> <td><input type="reset" value="重置"></td> <td><input type="submit" value="提交"></td> </tr>
</table>
</form> </body>
</html> |
处理数据
<?php $host = 'localhost'; $user_name = 'root'; $password = '123456';
$id = $_POST['id']; $name =iconv("utf-8", "gbk", $_POST['name']); $class = $_POST['class']; $sex = iconv("utf-8", "gbk", $_POST['sex']);
if(empty($id) || empty($name)){ echo '请填写id和用户名<a href="index.php">返回</a>'; exit; }
$conn = mysql_connect($host,$user_name,$password);
if (!$conn){ die("数据库连接失败".mysql_error()); }
mysql_select_db("hlw2016");
$sql = "INSERT INTO `student`(`id`, `name`, `class`, `sex`) VALUES ('$id','$name','$class','$sex')";
mysql_query($sql) or die("<br>ERROR:".mysql_error()."<br>SQL:".$sql);
mysql_close($conn);
echo "数据插入成功!";
|
4.3.2改——根据表单内容修改数据库数据
<?php $host = 'localhost'; $user_name = 'root'; $password = '123456';
$id = $_POST['id']; $name =iconv("utf-8", "gbk", $_POST['name']); $class = $_POST['class']; $sex = iconv("utf-8", "gbk", $_POST['sex']);
// if(empty($id) || empty($name)){ // echo '请填写id和用户名<a href="index.php">返回</a>'; // exit; // }
$conn = mysql_connect($host,$user_name,$password);
if (!$conn){ die("数据库连接失败".mysql_error()); }
mysql_select_db("hlw2016");
// $sql = "UPDATE `student` SET `name` = '$name',`class` = '$class',`sex` = '$sex' WHERE id =11"; $sql = "DELETE FROM `student` WHERE id = 11"; mysql_query($sql) or die("<br>ERROR:".mysql_error()."<br>SQL:".$sql);
mysql_close($conn);
echo "数据删除成功!".$_POST['id'].$name.$class;
|
个人博客系统
个人博客系统结构与页面
实现个人博客系统主要是对数据库进行读、写、更新、删除操作。
用户访问博客主页面,备课主页面将读取数据库中的所有博客日志记录并进行分页显示,如果数据库中没有任何日志记录,将显示相关的提示文字。
博客管理可以通过单击“管理登陆”链接,转到博客管理登陆页面,输入用户名和密码,登陆博客管理页面,在博客管理页面中同样会显示数据库中的所有日记。单击“添加博客日志”链接,转到“添加日志”页面,添加新的博客日志,在添加日志的页面中可以通过单击“编辑”和“删除”链接,修改或删除数据库中的某条日志。单击“推出管理”链接,推出博客管理界面,返回博客系统主页面。
在博客系统架构中主要有7个页面,分别如下:
index.php(博客首页)
该页面用于显示博客的内容信息,用户可以单击感兴趣的链接访问博客。
dhow.php(详细内容显示页面)
该页面接受URL传递的id参数,在数据库中查询到对应的博客数据记录,并在该页面中显示该条博客的具体内容。
login.php(博客管理登陆页面)
该页面为个人博客管理登陆页面,在该页面中的表单填写相应的信息可以登录到个人博客管理页面。
admin.php(博客管理主显示页面)
该页面的作用是显示数据库的博客主题记录,并在每条信息后提供“编辑”和“删除”操作链接。
add_blog(添加博客日志页面)
该页面为添加博客日志页面,该页面提交的信息将被添加到数据库,并显示在用户管理界面。
updata_blog.php(修改博客日志界面)
该页面接受URL传递的id参数,在数据库中查询到对应的数据记录,在该页面中显示该数据记录的相关内容,并且可以直接更新数据库中该条信息的记录。
del_blog.php(删除博客日志页面)
该页面接受URL传递的id参数,在数据库中查询到对应的数据记录,并在数据库中将该条信息删除。
个人博客数据库设计
个人博客的数据库结构比较简单,共创建两个数据表,分别是admin(后台管理用户)和blogdata(博客日志数据)。
Admin表
字段 | 类型 | 长度 | 整理 |
Username | Varchar | 11 | Utf8_general_ci |
Password | Varchar | 11 | Utf8_general_ci |
Blogdata表
字段 | 类型 | 长度 | 整理 |
Id | Int | 11 |
|
Title | varchar | 100 | Utf8_general_ci |
Date | Date |
|
|
Type | Text | 100 | Utf8_general_ci |
Content | Text |
| Utf8_general_ci |