




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章PHP操作数据库,PHP连接数据库MYSQLI扩展数据库的操作,数据表的操作数据信息的排序数据信息的操作,目录,3.1【案例11】展示员工信息,需求分析:在员工管理系统中,展示员工基本信息是十分重要的功能。该功能可以帮助公司更好的管理员工,例如可以通过查看员工基本信息来确定员工的工龄,也可以快速查找某个员工,得知其联系方式、家庭住址等,接下来我们就来开发展示员工信息功能。,3.1【案例11】展示员工信息,设计思路:(1)创建员工信息表,该表用于保存员工的详细信息(2)向员工表中添加数据,用于测试员工信息展示功能(3)为了让PHP能够操作mysql数据库,因此在php.ini配置文件中开启mysql扩展(4)通过mysql扩展提供的mysql_connect()函数来连接数据库,3.1【案例11】展示员工信息,设计思路:(5)设置字符集和选择数据库,用于指定字符集和要操作的数据库(6)编写SQL查询语句,并使用mysql扩展提供的mysql_query()函数执行,取得结果集(7)使用mysql_fetch_assoc()函数处理结果集,然后保存到数组中(8)创建视图文件,将处理后的员工信息显示到页面中,3.1【案例11】展示员工信息,【案例11】员工信息列表,3.1【案例11】展示员工信息,实现步骤,具体实现步骤如下:,3.1【案例11】展示员工信息,知识点讲解,1、数据库扩展,2、连接和选择数据库,3、执行SQL语句,4、处理结果集,5、释放资源,3.1【案例11】展示员工信息,1、数据库扩展(1)mysqli扩展mysqli扩展是mysql的增强版扩展,它是MySQL4.1及以上版本提供的功能。mysqli扩展在默认情况下已经安装好了,需要开启时,在php.ini配置文件中找到下面的配置项,去掉分号注释即可。修改后重新启动Apache,然后通过phpinfo()函数查看mysqli扩展是否开启成功。,;extension=php_mysqli.dll,3.1【案例11】展示员工信息,1、数据库扩展(2)PDO扩展在早期的PHP版本中,由于不同数据库扩展的应用程序接口互不兼容,导致PHP所开发的程序的维护困难、可移植性差。为了解决这个问题,PHP开发人员编写了一种轻型、便利的API来统一操作各种数据库,即数据库抽象层PDO扩展。,3.1【案例11】展示员工信息,1、数据库扩展(2)PDO扩展需要开启时,在php.ini配置文件中找到去掉分号注释即可。修改完成后重新启动Apache,可通过phpinfo()函数查看PDO扩展是否开启成功。,;extension=php_pdo_mysql.dll,3.1【案例11】展示员工信息,知识点讲解,1、数据库扩展,2、连接和选择数据库,3、执行SQL语句,4、处理结果集,5、释放资源,3.1【案例11】展示员工信息,2、连接和选择数据库在【案例11】中我们知道了mysql扩展连接数据库使用的函数:需要注意的是,在填写数据库服务器地址的时候,还需要指定数据库的端口号。如果不指定该参数,则会使用mysql数据库的默认端口3306。,mysql_connect(),3.1【案例11】展示员工信息,2、连接和选择数据库在选择数据库时,是通过mysql_query()函数执行“use数据库名”这条SQL语句来实现的。实际上mysql扩展还提供了一个函数来实现数据库的选择,那就是mysql_select_db(),其声明方式如下:,boolmysql_select_db(string$database_name,resource$link_identifier),3.1【案例11】展示员工信息,2、连接和选择数据库在上述声明中,参数$database_name表示要选择的数据库名称,可选参数$link_identifier表示MySQL连接,默认使用最近打开的连接;如果没有找到该连接,则尝试不带参数调用mysql_connect()来创建;如果没有找到并无法建立该连接,则会生成E_WARNING级别的错误。,3.1【案例11】展示员工信息,知识点讲解,1、数据库扩展,2、连接和选择数据库,3、执行SQL语句,4、处理结果集,5、释放资源,3.1【案例11】展示员工信息,3、执行SQL语句在MySQL数据库中,通过执行SQL语句可以实现数据库的增、删、改、查等操作。而PHP操作MySQL同样使用SQL语句,不过需要借助mysql_query()函数来执行SQL语句。mysql_query()函声明方式如下:,resourcemysql_query(string$query,resource$link_identifier=NULL),3.1【案例11】展示员工信息,3、执行SQL语句在上述声明中$query表示SQL语句,$link_idenifier是可选项,表示MySQL连接标识,若省略,则使用最近打开的连接,该函数的返回值是资源类型数据。,3.1【案例11】展示员工信息,知识点讲解,1、数据库扩展,2、连接和选择数据库,3、执行SQL语句,4、处理结果集,5、释放资源,3.1【案例11】展示员工信息,4、处理结果集(1)mysql_fetch_row()函数该函数的作用是从结果集中读取出一条数据,以索引数组的形式返回。其声明方式如下:当该函数执行成功后,会自动读取下一条数据,直到结果集中没有下一条数据时为止。,arraymysql_fetch_row(resource$result),3.1【案例11】展示员工信息,4、处理结果集(2)mysql_fetch_array()函数该函数可以看做mysql_fetch_row()函数与mysql_fetch_assoc()函数的集合体,它会将结果集中的数据分别以索引数组和关联数组的形式返回。其声明方式如下:,arraymysql_fetch_array(resource$result,int$result_type),3.1【案例11】展示员工信息,4、处理结果集(2)mysql_fetch_array()函数由于该函数可以同时返回索引数组和关联数组,因此该函数提供了一个可选参数$result_type,其值可以是MYSQL_BOTH(默认参数),MYSQL_ASSOC或MYSQL_NUM中的一种,其中MYSQL_ASSOC只得到关联索引形如mysql_fetch_assoc(),MYSQL_NUM只得到数字索引形如mysql_fetch_row()。,3.1【案例11】展示员工信息,4、处理结果集(3)mysql_fetch_object()函数函数mysql_fetch_object与mysql_fetch_array()类似,只有一点区别,即前者返回的是一个对象而不是数组,其声明方式如下所示:在上述声明中,参数$result是调用mysql_query()函数返回的结果集,由于该函数的返回值类型是object类型,所以只能通过字段名来访问数据,并且此函数返回的字段名大小写敏感。,objectmysql_fetch_object(resource$result),3.1【案例11】展示员工信息,5、释放资源(1)mysql_free_result()由于从数据库查询到的结果集都是加载到内存中的,因此当查询的数据十分庞大时,如果不及时释放就会占据大量的内存空间,导致服务器性能下降。而清除结果集就需要使用mysql_free_result()函数,其声明方式如下:该函数的返回值类型是布尔类型,执行成功返回TRUE,执行失败返回FALSE。,boolmysql_free_result(resource$result),3.1【案例11】展示员工信息,5、释放资源(2)mysql_close()数据库连接也是十分宝贵的系统资源,一个数据库能够支持的连接数是有限的,而且大量数据库连接的产生,也会对数据库的性能造成一定影响。因此可以使用mysql_close()函数及时的关闭数据库连接,其声明方式如下:,boolmysql_close(resource$link_identifier=NULL),3.1【案例11】展示员工信息,5、释放资源(2)mysql_close()在上述声明中,函数的返回值类型是布尔型,成功时返回TRUE,失败时返回FALSE。$link_identifer代表要关闭的MySQL连接资源。如果没有指定$link_identifer,则关闭上一个打开的连接。,3.2【案例12】员工信息排序,需求分析:在录入员工信息数据时,员工的所属部门、入职时间等都是不可预料的。因此员工信息表中的员工数据,展示到页面中是没有任何顺序可言的。大量的员工信息无序的排列显示,对用户查看员工信息很不方便。,3.2【案例12】员工信息排序,需求分析:为解决这类问题,就可以通过为特定字段添加排序功能来对员工信息进行排序显示。接下来就在【案例11】的基础上,为员工信息表中的“所属部门”和“入职时间”添加排序功能,来实现员工信息的排序显示。,3.2【案例12】员工信息排序,设计思路:(1)向员工表添加更多测试数据,用来更直观的展现排序功能。(2)修改视图文件,为员工表的“所属部门”及“入职时间”创建排序链接。(3)定义合法排序字段,用于验证请求的排序字段是否为规定的排序字段。(4)把参数信息与定义的合法排序字段进行匹配,完成排序的关键SQL语句。,3.2【案例12】员工信息排序,设计思路:(5)更新排序链接的排序状态值,完成正序排序和倒序排序的切换。(6)判断是否需要排序,如果需要则组合orderby子句。(7)创建视图文件,将处理后的员工信息显示到页面中。,3.2【案例12】员工信息排序,【案例12】员工信息排序,3.2【案例12】员工信息排序,实现步骤,具体实现步骤如下:,3.2【案例12】员工信息排序,知识点讲解,1、orderby排序语法,2、in_array()函数,3、isset()的使用,3.2【案例12】员工信息排序,1、orderby排序语法orderby是对查询结果进行排序的SQL子句,使用orderby对查询结果进行排序,其语法格式如下:在上面的语法格式中,指定的字段名1、字段名2等是对查询结果排序的依据。参数ASC表示按照升序进行排序,DESC表示按照降序进行排序。默认情况下,按照ASC方式进行排序。,SELECT字段名1,字段名2,FROM表名ORDERBY字段名1ASC|DESC,字段名2ASC|DESC,3.2【案例12】员工信息排序,知识点讲解,1、orderby排序语法,2、in_array()函数,3、isset()的使用,3.2【案例12】员工信息排序,2、in_array()函数的使用在【案例12】中,我们把合法的排序字段保存到了一个数组中。当需要排序时,先判断排序字段是否存在于这个数组中,这样可以帮助我们避免URL地址被修改后出现非法字段导致程序错误。in_array()函数可以在我们检验字段是否合法时使用,其语法格式如下:,in_array(value,array,type),3.2【案例12】员工信息排序,2、in_array()函数的使用上述语法中,value是必选参数,表示要在数组中搜索的值。array是必选参数,表示要搜索的数组。type是可选参数,如果该参数设置为true,则会检查搜索的数据与要搜索的数组中的值在数据类型上是否相等。,3.2【案例12】员工信息排序,知识点讲解,1、orderby排序语法,2、in_array()函数,3、isset()的使用,3.2【案例12】员工信息排序,3、isset()函数的使用在开发过程中,经常需要通过判断某个变量是否存在,来决定下面的业务逻辑。而判断变量是否存在常用的函数有两个:,isset()、empty(),3.2【案例12】员工信息排序,3、isset()函数的使用这两个函数都是用来判断变量是否存在的,都会返回布尔值。但是两者的判断条件有些许差异,在使用empty()函数判断时,、0、0、NULL、FALSE、array()以及没有任何属性的对象都将被认为是空的。而在使用isset()函数判断时,如果变量不存在、变量存在且其值为NULL,返回FALSE,如果变量存在且值不为NULL,则返回TRUE。,3.2【案例12】员工信息排序,需求分析:员工排序功能可以帮助用户快速将员工数据按照一定规律排列显示,但是用户仍然需要面对大量的信息数据,这在进行员工筛选的时候非常不便。因此还需要有一种快捷方法,可以根据某些条件,进行快速查询,仅把符合查询条件的数据从数据表中查询出来并输出到页面中。,3.2【案例12】员工信息排序,需求分析:这就是员工信息搜索功能,接下来我们在【案例11】的基础上,添加信息搜索功能。,3.3【案例13】员工信息搜索,设计思路:(1)为视图页面添加搜索表单,用来传递搜索条件。(2)获取查询条件,对表单提交的查询关键字进行安全处理,最后组成where条件。(3)生成SQL语句,执行并获取结果集,处理结果集以便显示。(4)载入html模板文件,显示最终搜索结果。,3.3【案例13】员工信息搜索,【案例13】员工信息搜索,3.3【案例13】员工信息搜索,实现步骤,具体实现步骤如下:,3.3【案例13】员工信息搜索,知识点讲解,1、转义SQL特殊字符,2、SQL中like使用,3.3【案例13】员工信息搜索,1、mysql_real_escape_string()该函数用于转义SQL语句字符串中的特殊字符,语法格式如下:其中$sql是必选参数,表示被转义的SQL语句字符串。$link是可选参数,表示mysql连接,如果未指定,则使用上一个mysql连接。因此使用该函数之前,一定要先连接mysql数据库。,mysql_real_escape_string($sql,$link),3.3【案例13】员工信息搜索,知识点讲解,1、转义SQL特殊字符,2、SQL中like使用,3.3【案例13】员工信息搜索,2、SQL中like使用在SQL语句中,like操作符用于在where子句中搜索列中的指定模式。其语法格式如下:,selectcolumn_name(s)fromtable_namewherecolumn_namelikepattern,3.3【案例13】员工信息搜索,2、SQL中like使用现在以emp_info表为例,如果希望从中选取姓名以“李”开头的所有人,则可以使用下面的select语句:其中“%”表示这里可以匹配任意字符。,select*fromemp_infowheree_namelike李%,3.3【案例13】员工信息搜索,2、SQL中like使用如果希望从中选取姓名以“三”结尾的所有人,则可以使用下面的select语句:通过使用NOT关键字,从emp_info表中选取姓名中不包含“李”的所有人,则可以使用下面的select语句:,select*fromemp_infowheree_namenotlike%李%,select*fromemp_infowheree_namelike%三,3.4【案例14】分页显示信息,需求分析:公司的员工通常有数百人甚至上千人,这么多的员工数据一次性查询并显示的话,不仅效率不高而且没有意义。为了提高查询效率和用户体验,常用的做法就是将数据进行分页显示,每一页显示指定数量的员工信息,当需要查看更多员工信息时,点击“下一页”进行翻页查看即可。接下来就在【案例11】的基础上,进行分页显示信息功能的开发。,3.4【案例14】分页显示信息,设计思路:(1)修改php文件,使用limit子句实现分页获取数据。(2)创建页码链接,通过页码链接传递页码信息。(3)计算最大分页数,并通过$_GET获取当前请求的页码信息。(4)读取结果集,对数据进行处理,最后载入视图以显示数据。(5)在视图页面中,添加创建好的页码链接。,3.4【案例14】分页显示信息,【案例13】分页显示信息,3.4【案例14】分页显示信息,实现步骤,具体实现步骤如下:,3.4【案例14】分页显示信息,知识点讲解,1、limit的使用,2、分页链接生成函数,3.4【案例14】分页显示信息,1、limit的使用通过【案例14】我们知道,实现分页的核心原理是利用SQL语句的limit子句。limit子句需要两个参数,第一个参数表示查询的数据起始位置,第二个参数表示要获取的数据量。实际上第一个参数也是可以省略的,当省略第一个参数时,会默认从数据表的第一条数据开始获取指定数量的数据,代码示例如下:上述代码的含义是,从emp_info表中获取前10条数据。,select*fromemp_infolimit10,3.4【案例14】分页显示信息,知识点讲解,1、limit的使用,2、分页链接生成函数,3.4【案例14】分页显示信息,2、分页链接生成函数一个完善的员工信息展示页,应同时具有排序、搜索、分页等功能。并且各个功能之间可以相互配合,例如在某种排序下,同样可以进行分页显示。这种功能的实现,就需要在分页链接中保留排序状态,下面我们就把生成分页链接的代码进行重新编写,将其封装为函数并能够生成保留其他GET信息的分页链接,具体代码如下:,3.4【案例14】分页显示信息,2、分页链接生成函数,/*分页链接生成函数*param$pageintGET传递的page值*param$max_pageint最大页码值*/functionmakePageHtml($page,$max_page)/设置变量,保留GET参数$prams=;/删除GET参数中的pageunset($_GETpage);/循环遍历$_GET数组,重新拼接URL中的GET参数foreach($_GETas$k=$v)$prams.=$k=$v,3.4【案例14】分页显示信息,2、分页链接生成函数,/判断下一页的页码是否大于最大页码值,如果大于则把最大页码值赋值给它if($next_page$max_page)$next_page=$max_page;/计算上一页$prev_page=$page-1;/判断上一页的页码是否小于1,如果小于则把1赋值给它if($prev_page首页,3.4【案例14】分页显示信息,2、分页链接生成函数上述代码中,第7行先定义一个变量$prams并赋值空字符串,该变量用来保存所有GET参数。第9行代码用来删除$_GET数组中的page元素。再通过第1113行代码循环$_GET数组得到其他GET参数,并把这些参数按照URL中GET参数的形式重新拼接并赋值给$prams。,3.4【案例14】分页显示信息,2、分页链接生成函数接着开始计算下一页,判断下一页的页码是否大于最大页码值,如果大于则把最大页码值赋值给它。然后计算上一页,判断上一页的页码是否小于1,如果小于则把1赋值给它。最后拼接分页链接的html代码,在这个链接中,需要把其他GET参数与当前页码连接起来。,3.5【案例15】添加与修改信息,需求分析:公司的员工通常有数百人甚至上千人,这么多的员工数据一次性查询并显示的话,不仅效率不高而且没有意义。为了提高查询效率和用户体验,常用的做法就是将数据进行分页显示,每一页显示指定数量的员工信息,当需要查看更多员工信息时,点击“下一页”进行翻页查看即可。接下来就在【案例11】的基础上,进行分页显示信息功能的开发。,3.5【案例15】添加与修改信息,设计思路:(1)编写公用函数库文件,封装常用的数据库操作。(2)修改showList.php文件,引入公共函数库文件,简化程序代码。(3)修改list_html.php文件,增加“添加员工”的功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 隧道电力供应与系统建设方案
- 项目施工质量监控体系
- 中药煎服服药35课件
- 2025版猫咪宠物用品电商合作销售合同
- 二零二五年度房地产开发项目报建代理专业服务合同
- 二零二五年度猕猴桃树种子绿色种植与生态保护合同
- 二零二五年度化妆品原料批量订购合同
- 二零二五年度商业空间精装修工程承包合同
- 2025版婚恋产业知识产权保护合作协议下载
- 二零二五年度代付工程款三方财务监管协议
- 农村房地产转让合同协议
- 快速康复在泌尿外科的应用
- (标准)按摩店转让合同协议书
- 《死亡医学证明(推断)书》培训试题(附答案)
- 膀胱灌注的护理课件
- 桥梁安全保护区管理制度
- 学堂在线 大学生国家安全教育 章节测试答案
- 2025至2030中国增强型飞行视觉系统行业发展趋势分析与未来投资战略咨询研究报告
- 华文版二年级上册-写字-书法
- 学堂在线 数据结构(上) 章节测试答案
- 安全文明生产的保证措施
评论
0/150
提交评论