




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章PHP访问MySQL数据库,使用PHP访问MySQL数据库,要使用PHP提供的MySQL函数库。本章不仅会介绍使用这些函数,访问MySQL数据库的一般步骤,还将介绍如何把这些函数组织成类,演示进阶访问MySQL的方法。同时介绍一个第三方的数据库链接类ADODB。,11.1使用PHP访问MySQL,无论是自建的PHP访问类,还是第三方的数据库链接类,其核心都是使用PHP的MySQL函数实现的,本节主要介绍这些函数,及其访问MySQL的步骤。,11.1.1建立与关闭链接,在PHP中要想操作数据库,必须先与数据库建立一个链接,与MySQL数据库建立链接的是mysql_connect()函数。在操作完数据库后,需要使用mysql_close()函数来释放资源,下面演示mysql_connect()和mysql_close()函数的使用方法,代码如清单所示。,11.1.2选择数据库,建立数据库链接后,需要使用mysql_select_db()函数,来指定一个数据库。下面演示mysql_select_db()函数的使用方法,代码如清单示。清单mysql_select_db()函数的使用方法,11.1.3运行SQL语句,服务器安装了MySQL后,会提供数据存储及查询服务等操作,而这些操作都是通过SQL语句实现的,要在PHP中可以使用mysql_query()函数,执行关于MySQL的SQL语句。mysql_query()函数有2个参数:第1个参数是必选参数,值是用于指定要运行的SQL语句。第2个参数是可选参数,其值是使用mysql_connect()打开的数据库句柄,当这个参数被设置后,将在指定的数据库链接中选择数据库。当这个参数为空时,使用上一个打开的数据库链接。,11.1.4数据库编码,在使用phpMyAdmin创建learn数据库时,使用了gb2312_chinese_ci作为整理字符,而MySQL默认是使用latin1编码,来读取数据库数据的,这时就会产生编码冲突,使存储或读取的数据,产生乱码现象。为了解决这个问题,可以在选择数据库后,使用SQL语句来改变默认的字符集,演示代码如清单所示。清单改变MySQL默认编码,11.1.5以数字作为键名处理一行返回结果,在使用mysql_query()运行SELECT语句后,会返回一个资源句柄,在PHP中要使用特定的函数来处理返回的结果集,这些函数中的mysql_fetch_row()函数,可以从结果集中取出一行,作为数组使用。下面介绍mysql_fetch_row()函数的使用方法,,11.1.6以字段作为键名处理一行返回结果,使用mysql_fetch_assoc()函数,可以从结果集中取出一行,作为数组使用,并使用表中的字段数作为单元的键名。下面介绍mysql_fetch_assoc()函数的使用方法,代码如清单所示。,11.1.7更灵活的结果处理函数,使用mysql_fetch_array()函数,可以从结果集中取出一行,作为数组使用,并可根据参数来设置数组单元的键名。下面介绍mysql_fetch_array()函数的使用方法,代码如清单所示。,11.1.8对象与结果集,使用mysql_fetch_object()函数,可以从结果集中取出一行,作为对象来使用。下面介绍mysql_fetch_object()函数的使用方法,,11.1.9错误信息的处理,由于链接数据,以及读取、操作数据库数据的不确定性,很容易因此产生错误。对于错误信息有两种解决方法,一种是错误信息控制符,忽略产生的错误信息,继续执行脚本;另一种就是当错误产生时,尽可能的输出详细的错误信息,以便于用来找到脚本产生错误的地方。下面介绍当MySQL函数产生错误时,错误信息的处理方法,用于显示MySQL函数错误信息的有两个函数:mysql_errno()函数,用来返回MySQL函数产生的错误代码。mysql_error()函数,用来返回MySQL函数的错误信息。,11.1.10其他MySQL函数,除了之前介绍的MySQL函数外,本小节还将通过代码的形式,介绍一些比较常用的MySQL函数,mysql_affected_rows()函数,用于返回UPDATE、DELETE、INSERT语句运行后,对数据库记录的影响后的记录数。mysql_affected_rows()函数只有一个可选参数,其值是mysql_connect()建立的数据库链接。mysql_insert_id()函数,用于返回表中某字段,上一次运行INSERT语句后产生的ID值,与之对应的表中的字段属性,必须具备AUTO_INCREMENT属性。当INSERT语句没有产生AUTO_INCREMENT值时,将返回0。mysql_insert_id()函数返回的是上一次运行INSERT语句产生的AUTO_INCREMENT值,要想得到最新的AUTO_INCREMENT值,可以使用last_insert_id()函数来取得。,11.2使用自建类对MySQL进行访问,在11.1节中介绍了MySQL的相关函数,以及操作数据库的一般步骤。在实际使用中,要想更灵活的使用这些函数,可以创建一个类来组织这些函数,在类中可以使用简单的对象名,来替换复杂的MySQL函数名。本节将使用类的相关知识,编写一个拥有大部分MySQL函数功能的类,并把其应用在实际使用中。读者可以从本节了解类的创建,以及相关的知识点。,11.2.1创建MySQL类,在创建类之前,应该大体了解类要完成的功能。本小节要创建的类,会完成操作数据库的一般步骤,即建立数据库链接、表名称前缀、运行SQL语句、返回值的处理、错误信息处理等功能。在要实现的功能中,有一些需要特别注意的地方:数据库链接:些功能实现时,不只是单纯的mysql_connect()函数的重复,有关于数据库链接的编码,要操作的数据库,以及表的前缀都有涉及到。表名称前缀:在一个数据库同时存在很多表,而这些表属于不同系统时,可以通过表名称前缀,来区分表属于那个系统,例如:test_user、test_buy。SQL语句:解析SQL语句中的特殊字符,替换表名称前缀等功能,例如把SQL语句中的“#_”符号替换成“test_”。返回值:以表格形式返回值、以行形式返回值、以数组形式返回值、以对象形式返回值。错误信息:返回出错的SQL语句、错误代码及错误信息。最新ID:返回上一次运行INSERT语句,产生的ID值。结果集:返回结果集中记录的条数。,11.2.2自建类的使用,清单11.11中的代码,包括了访问数据的各个函数,但在实际使用中,和本章一开始了解的访问数据库的方法有所不同,下面演示自建类访问数据库的方法,使用自定义类访问数据的步骤:(1)使用new关键词实例化类,并设置初始参数。(2)使用setSql()方法,设置SQL语句。(3)使用query()方法,运行SQL语句。(4)使用loadRow()、loadRowList()、loadObject()、loadObjectList()函数,以数组形式返回结果集的内容。,11.2.3与SQL有关的方法,在自定义类中与SQL有关的方法有3个,其各自有不同的用途。setSql()方法用于处理SQL语句,去掉SQL语句中左右两边的空格,并替换根据参数,替换表名称前缀。假设类始化时设置的表名称前缀是“test”,使用setSql()方法设置SQL语句“select*from#_user”后,返回的字符串将是“select*fromtest_user”。getSql()用于返回setSql()方法设置好的SQL语句。query()用于运行setSql()方法设置好的SQL语句。,11.2.4与返回值相关的方法,在自定义类中与SQL有关的方法有4个,其各自有不同的用途。loadRow()方法用于返回结果集中的一条记录。loadRowList()方法用于返回结果集中的所示记录。loadObject()方法用于返回结果集中的一条记录作为对象。loadObjectList()方法用于返回结果集中的所有的记录作为对象。,11.2.5与错误信息相关的方法,在自定义类中与错误信息相关的方法是getError()函数,下面介绍如何使用此方法,代码如清单所示。清单与错误信息相关的方法setSql($sql);/运行sql语句$db-query();echo显示错误信息;echo$db-getError();echo;echo显示带SQL语句的错误信息;echo$db-getError(true);?,11.2.6与表有关的方法,在自定义类中与表有关的方法有2个,其各自有不同的用途。getTableCreateSQL()方法用于取得创建表的SQL语句,并通过数组方式返回。getTableFields()用于取得指定表的字段,并通过数组方式返回。,11.2.7其他方法,在自定义类中的getLines()方法用于获取结果集中的记录数,lastid()方法用于获取最后一次运行INSERT语句,自动产生的ID值。getVersion()方法用于取得MySQL数据库版本。,11.3使用ADODB访问MySQL,PHP支持的数据库非常多,但是链接各个数据库的函数,都存在着差异。要想使一个程序,同时支持多种不同的数据,就需要一个灵活的类来实现。11.2节中介绍的自定义类,只能完成MySQL数据库的操作,要想使用1个方法,访问不同的数据库,可以使用ADODB类库。ADODB是一个第三方的PHP类,其支持的数据库包括MySQL、PostgreSQL、Interbase、Firebird、Informix、Oracle、MSSQL、Foxpro、Access、ADO、Sybase、FrontBase、DB2、SAPDB、SQLite、Netezza、LDAP、ODBC、ODBTP等。本节主要介绍ADODB的安装及使用方法。,11.3.1ADODB安装,ADODB是用于操作数据库的类,其可以使用统一的方法,访问不同的数据库,这使得用户在不需要更改源代码的情况下,在不同类型的数据之间切换。要取得ADODB,可以从网站,11.3.2使用ADODB链接MySQL,使用ADODB链接数据库,必须要在链接数据库的脚本中,包含adodb.inc.php文件。下面演示ADODB链接MySQL数据库的方法,代码如清单所示。,11.3.3使用ADODB插入记录,使用ADODB播入记录,也是通过运行SQL实现的,同时ADODB还可以根据参数生成INSERT语句。下在演示使用ADODB插入记录到MySQL数据的方法,代码如清单所示。,11.3.4使用ADODB取出记录,使用ADODB的Execute()方法,运行SELECT语句后,返回的结果集,可以通过两种方法显示出来,下面演示如何使用这两种方法,,11.3.5使用ADODB更新记录,使用ADODB更新记录,可以使用UPDATE语句实现的,也可以通过GetUpdateSQL()方法创建SQL语句来实现更新数据,下面演示更新数据的方法,,11.3.6使用ADODB删除记录,使用ADODB删除记录,可以使用DELETE语句实现的,下面演示删除记录的方法,代码如清单(详细内容请参照本书),11.3.7使用ADODB实现分页,在操作数据库记录时,除了插入、选择、更新、删除记录外,实现最多的就是分页功能了。使用MySQL函数实现分页比较简单,本节将使用ADODB类实现分页功能,代码如清单所示。,11.3.8使用ADODB输出CSV文件,CSV作为一种标准格式的文件,可以被很多软件所兼容。通过包含toexport.inc.php文件,可以轻松把数据库记录输出为CSV文件。下面演示ADODB输出CSV文件的方法,代码如清单所示。,11.4常见问题,本章主要介绍了PHP中,与MySQL相关的函数。同时介绍了使用MySQL函数、自定义类、ADODB类库访问MySQL的方法。本节将列出一些容易产生错误的问题,进行解答。,11.4.1链接数据库,通过本章的介绍,读者可以了解到三种链接MySQL数据库的方法。这三种方法,并不能说那一种最好用,而应该根据实际情况来选择。使用MySQL函数链接数据库,是最简单的方法,其不需要包含文件,不需要初始化对象,适合于简单脚本操作数据库时使用。使用自定义类操作数据库,可以应用在一些小型的,单数据库项目中,这些项目别不需要支持多种类型的数据库,也就没有必要包含庞大的ADODB类库。使用ADODB操作数据库,主要用于增加项目的可移植性,还可以使项
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年市场调研与分析能力考试试卷及答案
- 农村数字金融生态-洞察及研究
- 2025年美术教育基础与创新实践的考试试卷及答案
- 2025年计算机程序设计考试试卷及答案
- 2025年城市环境管理与保护专业能力测评试题及答案
- 2025年电子信息工程师资格考试试卷及答案
- 讲故事比赛演讲稿
- 2024年度浙江省二级造价工程师之建设工程造价管理基础知识综合检测试卷A卷含答案
- 2024年度浙江省二级造价工程师之建设工程造价管理基础知识题库练习试卷B卷附答案
- 早期矫治培训课件
- 幼儿园小班交通安全主题PPT
- 医用耗材一次性使用申请表
- 山东大学计算思维2022期末考试真题(每年80%都是原题)
- GB/T 42068-2022农村产权流转交易市场建设和管理规范
- GB/T 10095.1-2022圆柱齿轮ISO齿面公差分级制第1部分:齿面偏差的定义和允许值
- GB/T 2833-1996陶管弯曲强度试验方法
- DB12T 1179-2023 泥态固化土道路填筑技术规程
- 西安市绿化养护管理标准
- 学校机房网络规划与设计
- 开标一览表(模板)
- 2009-2022历年河北省公安厅高速交警总队招聘考试真题含答案带详解2022-2023上岸资料汇编3
评论
0/150
提交评论