今天学习了一些比较有意思的东西,也就是用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文件。比如数据库的连接,错误信息的返回,断开连接等。使用时直接调用即可。