第8章PHP操作数据库PPT课件

上传人:沈*** 文档编号:92011189 上传时间:2022-05-18 格式:PPT 页数:64 大小:1.71MB
收藏 版权申诉 举报 下载
第8章PHP操作数据库PPT课件_第1页
第1页 / 共64页
第8章PHP操作数据库PPT课件_第2页
第2页 / 共64页
第8章PHP操作数据库PPT课件_第3页
第3页 / 共64页
资源描述:

《第8章PHP操作数据库PPT课件》由会员分享,可在线阅读,更多相关《第8章PHP操作数据库PPT课件(64页珍藏版)》请在装配图网上搜索。

1、1第第8章章 PHP操作数据库操作数据库8.1 PHP与与MySQL8.2 PHP与与SQL Server8.3 PHP与与Oracle8.4 PHP与与Access8.5 PHP与与DB228.1 PHP与与MySQLu8.1.1 建立连接建立连接1. 连接连接MySQL服务器服务器在PHP中,首先要与MySQL服务器建立连接后才能连接数据库,用于连接MySQL服务器的函数是mysql_connect()函数,语法格式如下:resource mysql_connect(string $server , string $username , string $password , bool $n

2、ew_link , int $client_flags )如果使用同样的参数第二次调用mysql_connect()函数,将不会建立新连接,而将返回已经打开的连接标志。参数$new_link指定在这种情况下是否建立新的连接,值为TRUE表示建立新的连接,值为FALSE时返回已经建立连接的句柄,默认值为FALSE。参数$client_flags指定MySQL客户端的一些常量,主要有以下几种:MYSQL_CLIENT_SSL。使用SSL加密。MYSQL_CLIENT_COMPRESS。使用压缩的通信协议。MYSQL_CLIENT_IGNORE_SPACE。允许在函数名后留空格位。MYSQL_CLI

3、ENT_INTERACTIVE。允许设置断开连接之前所空闲等候的 interactive_timeout 时间(代替 wait_timeout)。38.1.1 建立连接建立连接【例8.1】 测试能否连接MySQL数据库。新建EX8_1.php文件,输入以下代码:运行该文件,并查看提示信息,如果输出“连接成功”,表示PHP能够正确连接MySQL。如果提示“连接失败”,请确认服务器名、用户名和密码是否正确,确认MySQL服务器是否已经启动。如果提示不能使用mysql_connect()函数,请确认PHP安装目录下的libmysql.dll文件是否已经复制到系统目录“C:Windowssystem3

4、2”中。PHP还提供了另外一个用于连接MySQL服务器的函数:mysql_pconnect()函数。该函数用于建立一个与MySQL服务器的持久连接,语法格式如下:resource mysql_pconnect( string $server , string $username , string $password , int $client_flags )48.1.1 建立连接建立连接 2. 选择数据库选择数据库连接到服务器后,可以选择需要使用的数据库,使用mysql_select_db()函数,语法格式如下:bool mysql_select_db(string $database_nam

5、e , resource $ link_identifier )说明:$database_name参数为要选择的数据库名,可选参数$lin_identifier为一个连接标志符,如果没有指定则使用上一个打开的连接。如果之前没有已经打开的连接,则本函数尝试调用一个无参数的mysql_connect()函数来打开一个连接并使用。本函数运行成功返回TRUE,否则返回FALSE。例如:58.1.1 建立连接建立连接 3. 关闭连接关闭连接当一个已经打开的连接不再需要时,可以使用mysql_close()函数将其关闭,语法格式如下:bool mysql_close( resource $link_ide

6、ntifier )可选参数$link_identifier为指定的连接标志符,如果省略,则关闭上一个打开的连接。68.1.2 通过通过PHP执行执行SQL语句语句在PHP中,通常使用mysql_query()函数执行MySQL的SQL语句,语法格式如下:resource mysql_query ( string $query , resource $link_identifier )$query参数为要执行的SQL语句,语句后面不需要加分号。$link_identifier参数指定一个已经打开的连接标志符,如果没有指定则默认为上一个打开的连接。本函数执行成功后将返回一个资源变量来存储SQL语句

7、的执行结果。在执行SQL语句前,需要打开一个连接并选择相关的数据库。例如:78.1.2 通过通过PHP执行执行SQL语句语句除了SELECT语句,mysql_query()函数还可以执行其他各种SQL语句,例如,下面的代码执行了一条INSERT语句:除了mysql_query()函数,PHP还有一个mysql_db_query()函数也能够执行SQL语句,不同的是,该函数中可以指定SQL语句运行的数据库。语法格式为:resource mysql_db_query(string $database , string $query , resource $link_identifier )88.1

8、.2 通过通过PHP执行执行SQL语句语句说明:$database为要选择的数据库,$query为要执行的SQL语句,$link_identifier为指定的连接标志符。在运行mysql_db_query()函数时不需要使用mysql_select_db()函数来选择数据库。例如:98.1.3 处理返回结果处理返回结果1. mysql_fetch_row()函数函数使用mysql_fetch_row()函数可以从返回的结果集中逐行获取记录,语法格式如下:array mysql_fetch_row(resource $result)参数$result指定返回结果集的资源变量名,该函数从指定的结果

9、集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,数组的键名默认以数字顺序分配,偏移量从0开始。依次调用mysql_fetch_row()函数将返回结果集中的下一行,如果没有更多行则返回FALSE。例如: 081101 1 = 王林 2 = 1 3 = 1990-02-10 4 = 计算机 5 = 50 6 =)?108.1.3 处理返回结果处理返回结果【例8.2】 获取PXSCJ数据库中女同学的总学分信息。新建EX8_2.php文件,输入以下代码:?php$conn= mysql_connect(localhost,root,123456) or die(连接失败);mys

10、ql_select_db(PXSCJ, $conn) or die(选择数据库失败);mysql_query(SET NAMES gb2312);$sql=select * from XSB where 性别=0;$result=mysql_query($sql);echo ;echo 学号姓名总学分;while($row=mysql_fetch_row($result)list($XH,$XM,$XB,$CSSJ,$ZY,$ZXF,$BZ)=$row;echo $XH$XM$ZXF;echo ;?118.1.3 处理返回结果处理返回结果运行结果如图8.1所示。图8.1 查看学生信息128.1

11、.3 处理返回结果处理返回结果2. mysql_fetch_assoc()函数函数mysql_fetch_assoc()函数的作用也是获取结果集中的一行记录并保存到数组中,数组的键名为相应的字段名。语法格式如下:array mysql_fetch_assoc(resource $result)如果结果中的两个或两个以上的列具有相同字段名,最后一列将优先被访问。要访问同名的其他列,必须用该列的数字索引或给该列起个别名。对有别名的列,不能再用原来的列名访问其内容。例如:?php$conn= mysql_connect(localhost,root,123456);mysql_select_db(P

12、XSCJ, $conn);mysql_query(SET NAMES gb2312);$sql=select 学号 as XH, 姓名, 性别 from XSB where 学号=081101;$result=mysql_query($sql);$row=mysql_fetch_assoc($result);echo $rowXH. ;/输出081101,不能输出$row学号echo $row姓名. ;/输出王林?138.1.3 处理返回结果处理返回结果3. mysql_fetch_array()函数函数mysql_fetch_array()函数是mysql_fetch_row()函数的扩展。

13、除了将数据以数字作为键名存储在数组中外,还使用字段名作为键名存储。语法格式如下:array mysql_fetch_array(resource $result , int $ result_type )可选的$result_type参数是一个常量,可以是以下值:MYSQL_ASSOC,MYSQL_NUM和MYSQL_BOTH。如果用MYSQL_BOTH,将得到一个同时包含数字和字段名作为键名的数组。用MYSQL_ASSOC将得到字段名作为键名的数组(功能与mysql_fetch_assoc()函数相同),用MYSQL_NUM将得到数字作为键名的数组(功能与mysql_fetch_row()函

14、数相同)。默认值为MYSQL_BOTH。148.1.3 处理返回结果处理返回结果例如:081101 学号=081101 1=王林 姓名=王林 2=1 性别=1 )?158.1.3 处理返回结果处理返回结果4. mysql_fetch_object()函数函数使用mysql_fetch_object()函数将从结果集中取出一行数据并保存为对象,使用字段名即可访问对象的属性。语法格式如下:object mysql_fetch_object(resource $result)例如:姓名;/输出王林echo 专业:$row-专业;/输出计算机?168.1.4 其他其他MySQL函数函数1. mysql

15、_num_rows()函数函数mysql_num_rows()函数可以获取结果集中行的数目,语法格式如下:int mysql_num_rows(resource $result)2. mysql_num_fileds()函数函数获取结果集中字段的数目,语法格式如下:int mysql_num_fields(resource $result)3. mysql_affected_rows()函数函数本函数用于获取MySQL最后执行的INSERT、UPDATE或DELETE语句所影响的行数,语法格式如下:int mysql_affected_rows( resource $link_identifi

16、er )$link_identifier参数为已经建立的数据库连接标志符。本函数执行成功则返回受影响的行的数目,否则将返回1。若最近一次执行的是没有WHERE子句的DELETE语句,则表中所有记录都被删除,函数将返回0。注意,本函数只对改变MySQL数据库中记录的操作起作用,对于SELECT语句本函数将不会得到预期的行数。178.1.4 其他其他MySQL函数函数4. mysql_field_name()函数函数本函数用于获取指定位置的字段名,语法格式如下:string mysql_field_name(resource $result , int $field_index)$filed_in

17、dex参数为要获取字段的位置,用数字表示,例如,1表示第1列。5. mysql_field_type()函数函数本函数返回指定字段的数据类型,语法格式如下:string mysql_field_type(resource $result , int $field_offset)$field_offset参数用于指定字段所在的位置。6. mysql_field_len()函数函数本函数用于返回指定字段的长度,语法格式如下:int mysql_field_len (resource $result , int $field_offset )参数格式与mysql_field_type()函数类似。1

18、88.1.4 其他其他MySQL函数函数 7. mysql_free_result()函数函数语法格式如下:bool mysql_free_result(resource $result)本函数将释放所有与结果标志符$result所关联的内存。由于在脚本结束后所有关联的内存都会被自动释放,所以仅需要在考虑到返回很大的结果集会占用很多内存时才调用本函数。 8. mysql_create_db()函数函数本函数用于创建一个新的MySQL数据库,语法格式如下:bool mysql_create_db(string $database_name, resource $link_identifier )

19、$database_name参数指定要创建的数据库名。 9. mysql_drop_db()函数函数本函数用于删除一个已经存在的MySQL数据库,语法格式如下:bool mysql_drop_db (string $database_name , resource $ link_identifier ) 10. mysql_data_seek()函数函数本函数用于将结果集中的内部指针移动到指定的行号,语法格式如下:bool mysql_data_seek(resource $result , int $row_number)$row_number参数用于指定要移动到的行号,例如,为2表示移动到

20、第2行。198.1.5 实例实例操作课程表操作课程表【例8.3】 使用PHP操作MySQL中的PXSCJ数据库,对课程信息实现查询、增加、删除、修改的功能。建立触发器,如果删除一条记录,则同时删除成绩表中该课程信息。在MySQL客户端输入以下创建触发器的代码:USE PXSCJ;DELIMITER $CREATE TRIGGER KC_DELETE AFTER DELETEON KCB FOR EACH ROWBEGINDELETE FROM CJB WHERE 课程号=OLD.课程号;END$DELIMITER ;新建EX8_3.php文件,输入以下代码。208.1.5 实例实例操作课程表操

21、作课程表运行结果如图8.2所示。在第一个文本框中输入课程号,单击【查找】按钮,如果课程表中有这个课程号,则下方的表格中会显示各列的内容。在文本框中修改该课程的信息后单击【修改】按钮即可对该课程进行修改,单击【添加】按钮可以添加新的课程,单击【删除】按钮可以删除某门课程,并激活触发器KC_DELETE,同时将成绩表CJB中的该门课程的信息删除。图8.2 课程表操作218.2 PHP与与SQL Serveru8.2.1 相关配置相关配置同PHP与MySQL的连接方法类似,PHP也提供了操作SQL Server的函数库,名为mssql。但mssql函数库在默认情况下是无法使用的,必须安装mssql扩

22、展库才能使用。用户可以打开php.ini文件查找其中有没有以下这行:extension=php_mssql.dll如果有,并且最前面没有分号,则表示已经安装了mssql扩展。如果没有则需要用户自行去下载一个与当前PHP版本相同、名为php_mssql.dll的DLL文件,将其保存在PHP安装目录下的ext文件夹(D:ProjectPHPext)下。然后打开PHP配置文件php.ini,在最后加上上面这行代码。连接SQL Server时可能还需要一个名为ntwdblib.dll的文件,如果找不到该文件,用户可以在http:/ package压缩包,在压缩包的文件中找到ntwdblib.dll文件

23、,将这个文件复制到C:/Windows/system32文件夹下。之前所说的php_mssql.dll文件也可以在压缩包文件的ext文件夹下找到。228.2.1 相关配置相关配置配置工作做好后,重启Apache服务器。打开phpinfo页面文件夹,如果浏览器中能显示如图8.3所示内容,则说明mssql扩展已经成功安装。图8.3 mssql扩展238.2.2 建立连接建立连接1. 连接连接SQL Server服务器服务器PHP连接SQL Server数据库是通过mssql_connect()函数来完成的,语法格式如下:resource mssql_connect ( string $server

24、name , string $username , string $password , bool $new_link )$servername参数是SQL Server的服务器名或本地机器名,$username参数指定用于连接数据库服务器的用户名,$password参数指定相应的密码。$new_link参数的含义与mysql_connect()函数相同。例如:248.2.2 建立连接建立连接2. 选择数据库选择数据库与MySQL一样,连接SQL Server服务器后也需要选择要使用的数据库,用到的函数是mssql_select_db(),语法格式如下:bool mssql_select_db

25、(string $database_name , resource $link_identifier )$database_name参数为要选择的数据库名。例如,假设SQL Server中已经创建了学生成绩管理数据库PXSCJ,数据库中的表XSB、KCB、CJB已经创建,样本数据也已经存在(设计过程略,表结构和样本数据参照第7章)。要选择PXSCJ数据库可以使用以下代码:3. 关闭连接关闭连接关闭连接使用mssql_close()函数,语法格式如下:bool mssql_close( resource $link_identifier )258.2.3 执行执行T-SQL语句语句PHP中使用m

26、ssql_query()函数来执行T-SQL语句,语法格式如下:mixed mssql_query (string $query , resource $link_identifier)mssql_query()函数的格式和用法与mysql_query()函数类似,例如:268.2.4 处理返回结果处理返回结果PHP在处理从SQL Server返回的结果时使用的是mssql_fetch_row()、mssql_fetch_assoc()、mssql_fetch_array()和mssql_fetch_object()函数,格式和用法与MySQL函数库中的mysql_fetch_row()、my

27、sql_fetch_assoc()、mysql_fetch_array()、mysql_fetch_object()函数类似。例如:?php$conn=mssql_connect(0BD7E57C949A420, sa, 123456) or die(连接失败);mssql_select_db(PXSCJ, $conn) or die(选择数据库失败);$sql=select * from XSB;$result=mssql_query($sql, $conn);while($row=mssql_fetch_array($result)echo $row学号.;?278.2.5 实例实例实现简

28、单的登录实现简单的登录系统系统【例8.4】 制作一个登录系统,实现用户注册、用户登录、用户注销、修改密码等功能。首先需要进行数据库设计,本例中需要创建的数据库名为USERS,数据库中有一个表userinfo,表的结构如表8.1所示。项目名列 名数 据 类 型长度是否可空默认值说 明用户名username不定长字符型(VARCHAR)20无主键,由英文字母、下划线或数字组成密码password不定长字符型(VARCHAR)20无620位字符性别sex位型(BIT)默认值11:男;0:女年龄age整数型(INT)默认值无邮箱email定长字符型(CHAR)30无表8.1 userinfo的表结构2

29、88.2.5 实例实例实现简单的登录实现简单的登录系统系统创建USERS数据库的语句如下:CREATE DATABASE USERS创建表userinfo的语句如下:USE USERSGOCREATE TABLE userinfo(usernameVARCHAR(20) NOT NULL PRIMARY KEY,password VARCHAR(20) NOT NULL,sexBITNOT NULL DEFAULT 1,ageINTNULL,emailCHAR(30)NULL)298.2.5 实例实例实现简单的登录实现简单的登录系统系统接下来进行页面的设计,在EX8_4文件夹下新建以下文件:E

30、X8_4_fun.php文件,用于连接数据库,代码如下:EX8_4_login.php文件,用户登录页面,代码。EX8_4_regist.php文件,用户注册页面,代码。308.2.5 实例实例实现简单的登录实现简单的登录系统系统EX8_4_main.php文件,主页面,代码如下:?phpsession_start();$userid=$_SESSIONuserid;/取得SESSION值if($userid)echo 欢迎用户.$userid.登录!;echo 查看个人信息 echo 修改密码 echo 注销账户 echo 退出;elseecho 对不起,您没有

31、权限访问本页面;?318.2.5 实例实例实现简单的登录实现简单的登录系统系统EX8_4_select.php文件,用于查看个人信息,代码如下:?phpinclude EX8_4_main.php;/包含主页面$username=$_SESSIONuserid;/取得SESSION值if($username)include EX8_4_fun.php;$select_sql=select * from userinfo where username=$username;$select_result=mssql_query($select_sql,$conn);while($row=mssql_

32、fetch_row($select_result)list($username, $password, $sex, $age, $email)=$row;echo 用户名:.$username.;echo 性别:;if($sex=1)echo 男.;elseecho 女.;echo 年龄:.$age.;echo email:.$email.;?328.2.5 实例实例实现简单的登录实现简单的登录系统系统EX8_4_update.php文件,用于修改密码,代码。EX8_4_delete.php文件,用于注销用户账户,代码如下:?phpinclude EX8_4_fun.php;session_s

33、tart();$username=$_SESSIONuserid;$delete_sql=delete from userinfo where username=$username;$delete_result=mssql_query($delete_sql,$conn);if(mssql_rows_affected($conn)!=0)echo alert(注销用户成功!);location.href=EX8_4_login.php;elseecho alert(注销用户失败!);location.href=EX8_4_main.php;?338.2.5 实例实例实现简单的登录实现简单的登录

34、系统系统本例的登录页面如图8.4所示,如果没有用户账户,可以单击【注册】按钮,进入注册页面,如图8.5所示。如果已有用户账户,输入后单击【登录】按钮即可进入主页面。图8.4 登录界面图8.5 用户注册页面348.2.5 实例实例实现简单的登录实现简单的登录系统系统主页面如图8.6所示。单击主页面中的各个超链接可实现各个功能,例如,可以查看用户的个人信息、修改密码、注销账户等。修改密码的界面如图8.7所示。 图8.6 主页面图8.7 修改密码358.3 PHP与与Oracleu8.3.1 相关配置相关配置PHP中提供了一套专门用于连接Oracle的函数,这些函数在默认情况下是无法使用的,必须要在

35、PHP中安装oci8扩展。本书在安装PHP时已经安装了这个扩展,所以这里不需要额外配置。若要查看PHP是否已经安装了oci8扩展,可以打开phpinfo页面,如果能看到如图8.8所示信息,说明已经安装了oci8扩展。如果没有安装oci8扩展,打开php.ini文件,找到“;extension=php_oci8.dll”所在的一行,将前面的分号去掉;如果没有找到该行,则在文件中添加这一行,保存后重启Apache即可。图8.8 安装oci8扩展368.3.1 相关配置相关配置在使用PHP操作Oracle前,必须保证Oracle数据库已经安装。本节要连接的Oracle中的数据库仍为PXSCJ,假设P

36、XSCJ数据库已经创建(创建步骤略),数据库中的三个表也已经创建,其中,三个表的结构根据Oracle允许的数据类型略有变化,例如,XSB表在Oracle中的表结构如表8.2所示。列 名数 据 类 型长 度是否可空默认值说 明学号定长字符型(CHAR)6无主键姓名定长字符型(CHAR)8无性别整数型(NUMBER)111:男;0:女出生时间日期型(DATE)系统默认无专业定长字符型(CHAR)12无总学分整数型(NUMBER)200总学分160备注不定长字符型(VARCHAR2) 500无表8.2 Oracle中的XSB的表结构378.3.2 建立连接建立连接1. 连接连接Oracle服务器服务

37、器在PHP 5.0以后的版本中,连接Oracle时使用oci_connect()函数,语法格式如下:resource oci_connect(string $username, string $password, string $db )说明:oci_connect()函数返回一个大多数OCI调用都需要的连接标志符。参数$username和$password分别指定用户名和密码。可选的第三个参数$db可以包含想要连接的本地Oracle的数据库实例。例如:2. 关闭连接关闭连接关闭连接使用oci_close()函数,语法格式如下:bool oci_close ( resource $connec

38、tion )参数$connection为已经打开的连接标志符。例如:388.3.3 执行执行PL/SQL语句语句1. 配置语句配置语句在使用PHP执行Oracle的PL/SQL语句时需要先使用oci_parse()函数配置SQL语句,以备使用其他函数执行,oci_parse()函数语法格式如下:resource oci_parse ( resource $connection , string $query )参数$query为要配置的PL/SQL语句,oci_parse()函数将在$connection上配置$query并返回一个语句标志符以用于其他函数。2. 执行语句执行语句语句配置完成后

39、,用oci_execute()函数执行一条已经配置过的语句。语法格式如下:bool oci_execute (resource $stmt)参数$stmt为已经解析过的语句标志符。如果函数运行成功则返回TRUE,否则返回FALSE。例如:398.3.4 处理返回结果处理返回结果PHP处理从Oracle返回的结果时经常使用到以下一些函数。oci_fetch_row()函数。使用oci_fetch_row()函数可以从返回的结果集中逐行获取记录,并作为数组返回,每个结果的列储存在一个数组的单元中,数组的键名默认以数字顺序分配,偏移量从0开始。语法格式:array oci_fetch_row ( r

40、esource $statement )该函数的用法和功能与mysql_fetch_row()函数类似。参数$statement是由oci_parse()函数创建并已经由oci_execute()函数执行过的含有语句标志符的资源变量。oci_fetch_array()函数。语法格式:array oci_fetch_array(resource $statement , int $mode )oci_fetch_array()函数是oci_fetch_row()函数的扩展,除了将数据以数字作为键名存储在数组中外,还可使用字段名作为键名存储。可选参数$mode的值可以是:OCI_ASSOC,OCI

41、_NUM和OCI_BOTH。如果用OCI_BOTH,将得到一个同时包含数字和字段名作为键名的数组。用OCI_ASSOC将得到字段名作为键名的数组(功能oci_fetch_assoc()函数相同),用 OCI_NUM将得到数字作为键名的数组(功能与coi_fetch_row() 函数相同)。默认值为OCI_BOTH。oci_fetch_array()函数的用法和功能与mysql_fetch_array()函数类似。408.3.4 处理返回结果处理返回结果oci_fetch_assoc()函数。语法格式:array oci_fetch_assoc ( resource $statement )该函

42、数用法和功能与mysql_fetch_assoc()函数类似。oci_fetch_object()函数。语法格式:array oci_fetch_assoc ( resource $statement )该函数用法和功能与mysql_fetch_object()函数类似。例如:?php$conn= oci_connect(system,123456,PXSCJ);$sql=select * from XSB;$statement=oci_parse($conn,$sql);oci_execute($statement) or die(语句执行失败);while($row=oci_fetch_a

43、rray($statement)echo $row学号. ;?418.3.5 实例实例实现简单的留言实现简单的留言本本【例8.5】 实现一个简单的留言本系统,留言本有查看、添加留言的功能。首先进行数据库设计,本系统使用到的表仍在PXSCJ数据库中创建,表名为Guestbook,表结构如表8.3所示。列 名数 据 类 型长 度是否可空默认值说 明ID整数型(NUMBER)2无留言编号,主键GUESTNAME定长字符型(CHAR)20无留言者姓名POSTTIME日期时间(DATE)默认值无留言时间MESSAGE不定长字符型(VARCHAR2)1000无留言内容表8.3 Guestbook表结构创建

44、表Guestbook的SQL语句如下:CREATE TABLE Guestbook(ID NUMBER(2) NOT NULL PRIMARY KEY,GUESTNAMECHAR(20)NOT NULL,POSTTIMEDATENOT NULL,MESSAGEVARCHAR2(1000);428.3.5 实例实例实现简单的留言实现简单的留言本本接下来进行页面的设计,在EX8_5文件夹下新建以下文件。EX8_5_main.php文件,这是系统的主页面,代码如下:进入留言本欢迎进入我的留言本查看留言.我要留言438.3.5 实例实例实现简单的留言实现简单的留言本本EX8_5_mainbody.ph

45、p文件,用于显示所有的留言,代码如下:?phpdate_default_timezone_set(PRC);/设置时区$conn=oci_connect(system,123456,PXSCJ);/连接Oracle数据库$sql=select ID, GUESTNAME, TO_CHAR(POSTTIME,YYYY-MM-DD HH24:MI:SS) AS POSTTIME,MESSAGE from Guestbook; $statement=oci_parse($conn,$sql);/创建SQL语句对象oci_execute($statement) or die(SQL语句执行失败);/执

46、行SQL语句echo ;while($row=oci_fetch_array($statement)/取得记录集echo .$rowID./td;echo .$rowGUESTNAME.发表于:;$timeTemp=strtotime($rowPOSTTIME); /将日期时间解析为 UNIX 时间戳$time=date(Y-n-j H:i:s,$timeTemp); /用date函数将时间转换为指定格式echo $time.;echo .$rowMESSAGE./td;echo ;?448.3.5 实例实例实现简单的留言实现简单的留言本本EX8_5_select.php文件,用于查看留言,代

47、码。EX8_5_post.php文件,用于添加留言,代码。EX8_5_delete.php文件,用于删除留言,代码如下:?php$conn=oci_connect(system,123456,PXSCJ);$ID=$_GETID;$sql=delete from Guestbook where ID=$ID;/删除留言$statement=oci_parse($conn,$sql);oci_execute($statement);if(oci_num_rows($statement)!=0)echo alert(删除成功);window.location=EX8_5_select.php;el

48、seecho alert(删除失败);window.location=EX8_5_select.php;?458.3.5 实例实例实现简单的留言实现简单的留言本本运行EX8_5_main.php文件,主页面如图8.9所示。图8.9 留言本主页面468.3.5 实例实例实现简单的留言实现简单的留言本本单击【查看留言】超链接可查看相关留言,例如,输入编号“1”查询情况如图8.10所示。图8.10 查看留言页面478.3.5 实例实例实现简单的留言实现简单的留言本本单击查看留言页面的【删除留言】超链接可以删除该留言。单击【我要留言】超链接进入添加留言页面,如图8.11所示。图8.11 添加留言页面4

49、88.4 PHP与与AccessAccess一般可以在安装Microsoft Office时选择安装,本书使用的版本是Microsoft Office Access 2003。有关Access的使用方法本书不做介绍,只介绍使用PHP操作Access数据库的方法。在操作Access前,首先在Access中新建数据库PXSCJ,再新建表XSB,XSB表的结构如表8.4所示。列 名数 据 类 型是 否 可 空默认值说 明学号文本无主键姓名文本无性别数字11:男;0:女出生时间日期/时间无专业文本无总学分数字00总学分160备注备注无表8.4 Access中XSB表的结构498.4.1 建立连接建立连

50、接在Access中新建示例数据库后就可以使用PHP进行连接了。PHP连接Access的方式与连接其他数据库不同,PHP中不提供Access的扩展,但可以通过COM组件来完成。COM组件是微软公司为了计算机工业的软件生产更加符合人类的行为方式而开发的一种新的软件开发技术。通过使用COM组件,可以完成对Access的连接。在建立连接时,首先需要创建一个COM对象,接着调用对象的open()方法,open()方法的参数是一个连接字符串,连接字符串的格式如下:driver=Microsoft Access Driver (*.mdb); dbq=$db; uid=$admin; pwd=$pass例如

51、,要连接PXSCJ数据库,可以使用以下代码:open(driver=Microsoft Access Driver (*.mdb); dbq=D:PXSCJ.mdb);$conn-close();?508.4.2 处理处理SQL语句和返回结果语句和返回结果执行SQL语句可以使用COM对象的execute()方法,例如:$conn-execute(select * from XSB);返回结果将保存为对象,通过访问对象的fields对象可以访问返回的数据,例如:open(driver=Microsoft Access Driver (*.mdb); dbq=D:PXSCJ.mdb);$rs=$c

52、onn-execute(select * from XSB);$nums=$rs-fields-count();/返回结果中列的数目echo $nums. ;while(!$rs-eof)/判断是否到最后一个记录echo $rs-fields学号.;/得到“学号”列的数据$rs-movenext();/将指针移到下一个记录?518.4.3 实例实例投票系统投票系统【例8.6】 使用PHP和Access制作一个投票系统,投票选出最受欢迎的数据库。管理员可以在后台对投票选项进行添加、修改、删除。首先进行数据库设计,本例中需要创建的数据库名为VOTE,数据库中有一个表polls,表的结构如表8.5所

53、示。项 目 名列 名数据类型是否可空默认值说 明投票主题idid数字无主键投票主题title文本无票数votes数字无表8.5 polls表结构投票的主题读者可以自行设定,本例使用的样本数据如表8.6所示。投票主题id投 票 主 题票 数1MySQL452SQL Server683Oracle234Access25表8.6 polls表样本数据528.4.3 实例实例投票系统投票系统接下来进行页面的设计,在EX8_6文件夹下新建以下文件。EX8_6_fun.php文件,用于连接Access数据库,代码如下:open(driver=Microsoft Access Driver (*.mdb);

54、 dbq=D:VOTE.mdb);?EX8_6_vote.php文件,这是本例的投票页面,代码。本文件运行结果如图8.12所示,选择选项后单击【投票】按钮即可完成投票。单击超链接可以查看投票结果,管理员还可以进入EX8_6_admin.php页面进行投票选项的管理。 图8.12 投票页面538.4.3 实例实例投票系统投票系统EX8_6_select.php文件,用于查看投票的情况,代码如下:execute(select * from polls);echo 投票情况:;$count=0;while(!$rs-eof)$count=$count+$rs-fieldsvotes;echo $rs

55、-fieldstitle.:.$rs-fieldsvotes.票;$rs-movenext();echo 合计.$count.票;?548.4.3 实例实例投票系统投票系统EX8_6_admin.php文件,投票管理界面,代码如下:投票管理当前的投票主题是:您最喜欢的数据库浏览选项添加选项删除选项返回投票页面558.4.3 实例实例投票系统投票系统投票情况如图8.13所示。投票管理页面如图8.14所示,可以进行投票选项的浏览、添加、删除等。 图8.13 投票情况页面 图8.14 投票管理页面568.4.3 实例实例投票系统投票系统EX8_6_insert.php文件,用于添加投票选项,代码。本

56、文件运行的结果如图8.15所示,输入新的选项后单击【添加】按钮即可添加。 图8.15 添加投票选项 578.4.3 实例实例投票系统投票系统EX8_6_delete.php文件,用于删除投票选项,代码。本文件的运行结果如图8.16所示。图8.16 删除投票选项588.5 PHP与与DB2u8.5.1 相关配置相关配置由于本系统中PHP通过IBM_DB2_API接口来操作DB 2数据库,但由于最新的PHP版本不包含这个接口的扩展库,所以需要下载。对于Windows用户,可以在PHP 5.2.6之前版本的下载文件中找到名为“php_ibm_db2.dll”的DLL文件。如果无法下载,购买本书的用户

57、可以到http:/ PHP中的ibm_db2扩展库598.5.2 建立连接建立连接 1. 连接连接DB 2PHP连接DB 2数据库使用db2_connect()函数,语法格式如下:resource db2_connect(string $database , string $username , string $password)说明:其中参数$database为要使用的数据库名称,$username为安装DB 2时设置的超级用户名,本书使用的是“PUSER”,$password为用户密码。函数如果运行成功则返回一个连接标志符,否则返回FALSE。例如: 2. 关闭连接关闭连接关闭连接可以使用

58、db2_close()函数。语法格式如下:bool db2_close(resource $connection)参数$connection为已经打开的连接标志符。608.5.3 处理处理SQL语句和返回结果语句和返回结果1. 执行执行SQL语句语句执行SQL语句可以使用db2_exec()函数,语法格式如下:resource db2_exec(resource $connection , string $statement)参数$connection为已经打开的连接,参数$statement为要执行的SQL语句。如果函数运行成功则返回一个资源变量,包含SQL语句的执行结果,否则返回FALSE

59、。例如:PHP连接DB 2还有另外一种方法,就是先使用db2_prepare()函数解析SQL语句并返回一个语句标志符,再使用db2_execute()函数执行SQL语句。db2_prepare()函数的语法格式如下:resource db2_prepare(resource $connection , string $statement)618.5.3 处理处理SQL语句和返回结果语句和返回结果db2_execute()函数的语法格式如下:bool db2_execute ( resource $stmt)参数$stmt为已经创建的语句对象,本函数用于执行SQL语句,执行成功返回TRUE,否

60、则返回FALSE。SQL语句执行的结果将保存在$stmt资源变量中。两个函数联合使用的方式如下:628.5.3 处理处理SQL语句和返回结果语句和返回结果2. 处理返回结果处理返回结果PHP操作DB 2时处理返回结果使用函数db2_fetch_array()、db2_fetch_both()、db2_fetch_assoc()和db2_fetch_object()。这些函数与PHP处理MySQL返回结果的函数略有不同。db2_fetch_array()函数将返回以数字作为键名的数组,而db2_fetch_both()函数将返回以数字和列名作为键名的数组。例如:?php$conn=db2_con

61、nect(PXSCJ,PUSER,123456);/连接DB 2数据库PXSCJ$sql=select * from XSB;/查找学生信息$result=db2_exec($conn,$sql);/执行SQL语句while($row=db2_fetch_both($result)echo $row学号. ;?638.5.4 实例实例学生成绩查询学生成绩查询【例8.7】 根据学生学号和课程名查询学生成绩。新建EX8_7.php文件,输入以下代码。运行EX8_7.php文件,在“学号”栏输入“081101”,在“课程名”栏输入“计算机基础”,单击【查询】按钮,“成绩”栏就会显示该学生所选该课程的成绩,如图8.18所示。修改“成绩”栏中成绩,单击【修改】按钮即可修改该学生该门课程的成绩。图8.18 学生成绩查询个人观点供参考,欢迎讨论

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!