第十一章 PHP数据库编程

  • 格式:doc
  • 大小:71.50 KB
  • 文档页数:8

第十一章数据库编程在学习了PHP的基础知识之后,本章开始学习如何用PHP操作数据库。

本章以SQL Server2000数据库为例,PHP中提供了丰富的内置函数来对SQL Server 2000进行操作,最基本的查询只要3步就可以做到。

操作灵活、简单、易学、易懂正是PHP的最大特点。

本章目标⏹掌握PHP连接SQL Server函数⏹掌握在PHP中对数据进行插入、删除、修改等函数⏹掌握如何在PHP中显示数据库信息,包括表头和表身⏹掌握如何对数据库进行复杂的查询⏹掌握分页显示技术11.1 PHP操作SQL Server 2000数据库掌握了SQL Server 2000的基本操作,接下来开始学习如何在PHP中应用SQL Server 2000。

本节介绍PHP和SQL Server2000的连接方式,包括建立连接、选择数据库、返回结果集和关闭连接等。

11.1.1 建立与SQL Server 2000数据库的连接PHP连接SQL Server 2000 数据库的方法很简单,应用mssql_connect()函数即可。

函数常用的语法格式如下:resource mssql_connect('hostname','username','password');参数hostname为SQL Server 2000服务器所在地址,包括两部分,服务器地址和服务器端口号。

如果不写端口号,默认为1433。

参数username为登录SQL Server 2000数据库的用户名。

参数password为用户密码。

如果连接成功,则该函数返回一个资源(resource),为以后执行SQL指令做准备。

下面我们来看一个连接数据库的实例,如果连接成功,则返回提示信息;连接失败则返回错误信息。

例:11-1.php当浏览器显示“Could not connect…”的字样时,说明是数据库连接的错误,这样就能迅速的发现错误原因,及时更正。

在网站开发过程中,错误是不可避免的,优秀的开发人员除了尽量的少出错误外,及时、准确的发现错误也是必要的。

11.1.2 选择和使用SQL Server 2000数据库连接数据库成功后,就要选择所要使用的数据库了,可以使用mssql_select_db()函数,格式如下:bool mssql_select_db(string database_name [,resource link_identifier]);如果成功则返回TRUE,失败则返回FALSE。

Mssql_select_db()设定与指定的连接标识符所关联的服务器上的当前激活数据库。

如果没有指定连接标识符,则使用上一个打开的连接。

如果没有打开的连接,本函数将无参数调用mssql_connect()来尝试打开一个并使用它。

例:11-2.php11.1.3 执行SQL指令接下来就要对数据库中的表进行操作了,执行SQL语句的函数mssql_query(),语法格式如下:resource mssql_query(string query [,resource link_identifier])mssql_query()向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。

如果没有指定link_identifier,则使用上一个打开的连接。

如果没有打开的连接,本函数会尝试无参数调用mssql_connect()函数来建立一个连接并使用之。

查询结果会被缓存。

注意:查询字符串query不应以分号结束。

11.1.4 分析结果集连接数据库的最终目的,是要返回一个结果给用户。

对于查询结果,主要包含两部分内容:字段名,数据。

object mssql_fetch_field()可以用来从某个查询结果中取得字段的信息。

如果没有指定字段偏移量,则下一个尚未被mssql_fetch_field()取得的字段被提取。

array mssql_fetch_row()从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。

每个结果的列储存在一个数据的单元中,偏移量从0开始。

依次调用mssql_fetch_row()将返回结果集中的下一行,如果没有更多行则返回FALSE。

注意:这两个函数返回的字段名是区分大小写的。

例:11-3.php附:SQL Server 数据库函数库(本函数库共有16 个函数)11.1.5 断开与SQL Server 2000数据库的连接每使用一次mssql_connect()函数或mssql_query()函数都会消耗系统资源。

少量用户是没有什么关系,但如果用户连接超过一定数量时,就会造成系统性能的下降,甚至死机、重启。

所以当得到需要的结果后,就可以释放和关闭资源了。

格式如下:mssql_free_result($result);mssql_close($link);第一条代码的作用是释放变量$result,第二条代码的作用是释放数据库连接$link。

说明:PHP与数据库的连接是非持久连接,系统会自动回收,一般不用设置关闭。

但如果一次性返回的结果集比较大,或网站访问量比较多,则最好手动释放一下。

11.2 管理SQL Server 2000 数据库中的数据在开发网站的后台管理系统中,对数据库的操作不仅局限于查询指令,对数据的添加等操作指令,也是必不可少的。

本节重点介绍如何在PHP页面中对数据库进行增、删、改的操作。

11.2.1 向数据库中添加数据首先介绍对数据进行添加的操作,使用的是“INSERT INTO”语句,PHP函数为mssql_query(),来看一个具体的实例。

格式:INSERT INTO table (field1,field2fieldn……) values (‘value1’,’ value2’,’ value3’, ……) 在这个实例中,插入一条图书记录。

添加成功返回添加成功的信息,否则返回添加失败的信息。

例:add.php11.2.2 编辑数据库数据有时数据插入后,才发现录入的是错误信息,或一段时间后数据需要更新,这时就要对数据进行编辑了。

数据更新使用“UPDA TE”语句,PHP函数依然是mssql_query()。

具体的操作和添加数据类似,只是将$sql用UPDA TE语句替代了。

格式:UPDA TE table set field1=’value1’, field2=’value2’, field3=’value3’……例:chk.php edit.php11.2.3 从数据库中删除数据相当于修改数据,删除数据则简单的多。

删除数据使用“DELETE”语句,PHP函数依然使用mssql_query()。

格式:删除单条记录:DELETE from table where id=$id删除多条记录:DELETE from table where id in (1,2,3)例:chk.php11.2.4 批量数据操作以上操作都是对单条数据进行的,但有的时候,需要对多条数据记录进行操作。

如:修改表中所有记录的字段值,删除不需要的数据等。

例:chkall.php11.3 对SQL Server 2000表查询在数据库中,查询是通过SELECT语句完成的。

SELECT语句可以从数据库中按用户提供的限定条件检索数据,并将查询结果以表格的形式返回。

查询是最简单的,只要一个“SELECT * FROM tb_name”即可。

同时,查询又是最复杂的,为了从海量信息中快速的查找到所需要的数据,就要给用户提供详尽的查询方式。

下面重点介绍对查询结果的分页显示。

先介绍在下面的实例中出现的几个分页技术常用的变量。

变量说明赋值$pagesize 每页要显示的记录数数字(用户自定义)$totalNum 查询结果的记录总数mssql_num_rows($result)$pagecount 总页数(int)(($totalNum-1)/$pagesize)+1 $absolutepage 当前页的页数初始值为1,根据请求的参数不同赋值其中函数mssql_num_rows($result)返回结果集$result中的记录总数。

还有一个类似函数为mssql_num_fields($result)返回结果集$result中的字段总数。

例:page.php11.4 本章总结介绍了如何在PHP在连接和使用SQL Server2000数据库,然后又介绍了如何使用PHP管理数据库中的数据,并进行增加、删除、修改、查询等操作;最后介绍了一种分页技术。

通过本章的学习,可以熟练掌握对SQL Server2000数据库的基本操作和应用:从建立数据库、建立数据表,到添加数据、更新数据、查询数据、删除数据以及删除表和库;可以熟练掌握PHP结合SQL Server2000实现常用的Web应用。

附:SQL Server 2000数据库函数库(共有16 个函数)1.mssql_affected_rows:取得最后 query 影响的记录数。

2.mssql_close:关闭与数据库的连接。

3.mssql_connect:连上数据库。

4.mssql_data_seek:移动列指标。

5.mssql_fetch_array:返回数组数据。

6.mssql_fetch_field:取得字段信息。

7.mssql_fetch_object:返回对象数据。

8.mssql_fetch_row:返回单列的各字段。

9.mssql_field_seek:设定指标到返回值的某字段。

10.mssql_free_result:释放返回占用内存。

11.mssql_num_fields:取得返回字段的数目。

12.mssql_num_rows:取得返回列的数目。

13.mssql_pconnect:打开 MS SQL 服务器长期连接。

14.mssql_query:送出一个 query 字符串。

15.mssql_result:取得查询 (query) 的结果。

16.mssql_select_db:选择一个数据库。

1.mssql_affected_rows说明:取得最后 query 影响的记录数。

语法:int mssql_affected_rows(int [link_identifier]);返回值:整数内容说明:本函数用来取得最后一次对数据库下 query 指令所影响的记录数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。

参数 link_identifier 可省略,为打开数据库的连接代号。

返回值即为记录数。

2.mssql_close说明:关闭与数据库的连接。

语法:boolean mssql_close(int [link_identifier]);返回值:布尔值内容说明本函数用来关闭与 MS SQL Server 数据库的连接,能关闭的为使用 mssql_connect() 函数打开的数据库,若使用 mssql_pconnect() 打开的数据库则不能以本函数关闭。