首页 > 代码库 > 11.28

11.28

今天学习了一些比较有意思的东西,也就是用PHP操作MYSQL,然后再展示在HTML页面上,当然还有其他的内容。

         首先是MYSQL的连接,分为①内连接②外连接③自然连接。

内连接:select <*|字段列表> from 左表 inner join 右表 on 左表.字段 = 右表.字段;

1.把两个表的指定字段的值进行每行数据的校对,全部指定字段都相同的行则以左表+右表的形式连接起来,其余的不显示。

2.其中inner可以省略,当左右两表进行对比的字段名相同时,表名可以省略。On可以用where替代。

         外连接:

                   On不可用where替代,outer可省略。

1.左外连接:select <*|字段列表> from 左表 inner join 右表 on 左表.字段 = 右表.字段;

与内连接相似,不过即使左右两表匹配不成功时,仍会显示左侧表,并且右表的数据的值用null替代,与左表连接后显示。

2.右外连接:select <*|字段列表> from 左表 inner join 右表 on 左左表.字段 = 右表.字段;

                   与左外连接同理,不过右外连接固定显示的右表,而左表不匹配时使用null填充。

         自然连接:

Select <*|字段列表> from 左表 natural join 右表;

1.两表进行匹配时,匹配规则由系统决定,自动匹配两表相同字段名的值,相同时便连接,不同则略过。

2.显示与内外连接不同,相同字段只保留显示一个,而内外链接是简单的进行首位拼接。并且匹配的字段将会置于表的首位。

3.同样有自然内连接,自然左外连接,自然右外连接。

         子查询(一条select语句中插入一条或多条select语句)

                  课堂只讲了子查询的分类,没什么实际意义。不过子查询简单来理解就是select的嵌套,也就是在使用前先进行逻辑拆分,把求一个目的的条件拆分几个步骤,然后每个步骤化为一个select语句。

列子查询:

                   子查询的结果为一个列的值,通常用来搭配in和not in ,判断表内同一个字段的值是否等于子查询的集合。

         行子查询:

                   子查询的结果为一个行,使用时同样要用同样多的字段用括号括起来去和子查询的结果匹配。用于需要查找多个列符合条件的情况。

         表子查询:

                   子查询的结果为一个表,一般当作数据源进行二次查询,子查询的结果最好带上别名。一般置于from关键字之后。

         Exists子查询:

                   用于判断子查询是否查询到数据。注册账户不可重名功能可应用。置于select之后。

 

 

 

 

 

         PHP操作MYSQL

                  首先PHP在操作MYSQL时相当于MYSQL的一个客户端,也就是说要完成:

1.建立连接和认证2.发送操作指令3.返回处理结果4.断开连接。

1)         建立连接和认证

mysql_connect()

         $link = mysql_connect(“localhost:3306”,’root’,’123456’);

定义一个变量link,把函数赋予link,函数中参数:主页:端口,账号,密码。

2)         发送操作指令

mysql_query()

共两个参数,第一个参数为SQL语句,第二个参数为连接资源,缺省为最近一次打开的连接资源。

$sql = “set names utf8”;

$link = mysql_connect(“localhost:3306”,’root’,’123456’);

$result = mysql_query($sql[,$link]);

3)         返回处理结果

返回的数据一种为布尔型,既能用来判断语句是否正常执行,没出错。

如果执行的SQL语句有数据返回,那么返回的数据即为资源型。但是使用要用专门的函数来在PHP中使用SQL数据。

4)         断开连接

mysql_close();

         mysql_close($link);

注意不能用unset删除$link来达到断开连接都为目的

         PHP提取资源结果集

                   mysql_fetch_array(资源结果集,返回设置参数)

                            将资源结果集,遍历每行数据,返回一个关联和索引并存的数组。

                            mysql_fetch_array(资源结果集,MYSQL_BOTH)

                            MYSQL_BOTH(缺省值),同时返回关联和索引数组

                            mysql_fetch_array(资源结果集,MYSQL_ASSOC)

                            MYSQL_ASSOC,只返回关联数组

                            mysql_fetch_array(资源结果集,MYSQL_NUM)

                            MYSQL_NUM,只返回索引数组

                   mysql_fetch_assoc()

                            相当于mysql_fetch_array(资源结果集,MYSQL_ASSOC);

                            只返回关联下标

                   mysql_fetch_row()

                            相当于mysql_fetch_array(资源结果集,MYSQL_NUM);

                            只返回索引数组

         资源结果集的遍历

                   $rows = array();

                   While($row = mysql_fetch_assoc($result)){

                            $rows[] = $row;

}

将资源结果集的每行数据放在变量$row中,然后每个$row的一维数组都将存放在$rows中,则$rows为一个二维数组。

         错误调试函数

                   PHP在执行SQL命令时采用静默模式,也就是说SQL命令执行时出现的错误并不会返回到用户。

                   mysql_errno()

                            获取错误的编号

                   mysql_error()

                            获取错误的信息

                   $link = @ mysql_connect(“localhost:3306”,’root’,’123456’);

         封装数据库连接文件

                   使用较频繁的指令直接封装成一个PHP文件。比如数据库的连接,错误信息的返回,断开连接等。使用时直接调用即可。

11.28