PHP操作数据库ppt课件_第1页
PHP操作数据库ppt课件_第2页
PHP操作数据库ppt课件_第3页
PHP操作数据库ppt课件_第4页
PHP操作数据库ppt课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章 PHP操作数据库操作数据库8.1 PHP与与MySQL8.2 PHP与与SQL Server8.3 PHP与与Oracle8.4 PHP与与Access8.5 PHP与与DB28.1 PHP与与MySQLu8.1.1 建立衔接建立衔接u1. 衔接衔接MySQL效力器效力器u在在PHP中,首先要与中,首先要与MySQL效力器建立衔接后才干衔接数据库,用于衔接效力器建立衔接后才干衔接数据库,用于衔接MySQL效力器的函数是效力器的函数是mysql_connect()函数,语法格式如下:函数,语法格式如下:uresource mysql_connect(string $server ,

2、string $username , string $password , bool $new_link , int $client_flags )u假设运用同样的参数第二次调用假设运用同样的参数第二次调用mysql_connect()函数,将不会建立新衔接,函数,将不会建立新衔接,而将前往曾经翻开的衔接标志。参数而将前往曾经翻开的衔接标志。参数$new_link指定在这种情况下能否建立新的衔指定在这种情况下能否建立新的衔接,值为接,值为TRUE表示建立新的衔接,值为表示建立新的衔接,值为FALSE时前往曾经建立衔接的句柄,默时前往曾经建立衔接的句柄,默许值为许值为FALSE。u参数参数$cl

3、ient_flags指定指定MySQL客户端的一些常量,主要有以下几种:客户端的一些常量,主要有以下几种:uMYSQL_CLIENT_SSL。运用。运用SSL加密。加密。uMYSQL_CLIENT_COMPRESS。运用紧缩的通讯协议。运用紧缩的通讯协议。uMYSQL_CLIENT_IGNORE_SPACE。允许在函数名后留空格位。允许在函数名后留空格位。uMYSQL_CLIENT_INTERACTIVE。允许设置断开衔接之前所空闲等候的。允许设置断开衔接之前所空闲等候的 interactive_timeout 时间替代时间替代 wait_timeout。8.1.1 建立衔接建立衔接【例8.1

4、】 测试能否衔接MySQL数据库。新建EX8_1.php文件,输入以下代码:运转该文件,并查看提示信息,假设输出“衔接胜利,表示PHP可以正确衔接MySQL。假设提示“衔接失败,请确认效力器名、用户名和密码能否正确,确认MySQL效力器能否曾经启动。假设提示不能运用mysql_connect()函数,请确认PHP安装目录下的libmysql.dll文件能否曾经复制到系统目录“C:Windowssystem32中。PHP还提供了另外一个用于衔接MySQL效力器的函数:mysql_pconnect()函数。该函数用于建立一个与MySQL效力器的耐久衔接,语法格式如下:resource mysql_

5、pconnect( string $server , string $username , string $password , int $client_flags )8.1.1 建立衔接建立衔接 2. 选择数据库选择数据库 衔接到效力器后,可以选择需求运用的数据库,运用衔接到效力器后,可以选择需求运用的数据库,运用mysql_select_db()函数,函数,语法格式如下:语法格式如下: bool mysql_select_db(string $database_name , resource $ link_identifier ) 阐明:阐明:$database_name参数为要选择的数据

6、库名,可选参数参数为要选择的数据库名,可选参数$lin_identifier为为一个衔接标志符,假设没有指定那么运用上一个翻开的衔接。假设之前没有曾一个衔接标志符,假设没有指定那么运用上一个翻开的衔接。假设之前没有曾经翻开的衔接,那么本函数尝试调用一个无参数的经翻开的衔接,那么本函数尝试调用一个无参数的mysql_connect()函数来翻开函数来翻开一个衔接并运用。本函数运转胜利前往一个衔接并运用。本函数运转胜利前往TRUE,否那么前往,否那么前往FALSE。例如:。例如: 8.1.1 建立衔接建立衔接 3. 封锁衔接封锁衔接 当一个曾经翻开的衔接不再需求时,可以运用当一个曾经翻开的衔接不再

7、需求时,可以运用mysql_close()函数将其封锁,语函数将其封锁,语法格式如下:法格式如下: bool mysql_close( resource $link_identifier ) 可选参数可选参数$link_identifier为指定的衔接标志符,假设省略,那么封锁上一个翻为指定的衔接标志符,假设省略,那么封锁上一个翻开的衔接。开的衔接。8.1.2 经过经过PHP执行执行SQL语句语句在PHP中,通常运用mysql_query()函数执行MySQL的SQL语句,语法格式如下:resource mysql_query ( string $query , resource $link_

8、identifier )$query参数为要执行的SQL语句,语句后面不需求加分号。$link_identifier参数指定一个曾经翻开的衔接标志符,假设没有指定那么默以为上一个翻开的衔接。本函数执行胜利后将前往一个资源变量来存储SQL语句的执行结果。在执行SQL语句前,需求翻开一个衔接并选择相关的数据库。例如:8.1.2 经过经过PHP执行执行SQL语句语句除了SELECT语句,mysql_query()函数还可以执行其他各种SQL语句,例如,下面的代码执行了一条INSERT语句:除了mysql_query()函数,PHP还有一个mysql_db_query()函数也可以执行SQL语句,不同

9、的是,该函数中可以指定SQL语句运转的数据库。语法格式为:resource mysql_db_query(string $database , string $query , resource $link_identifier )8.1.2 经过经过PHP执行执行SQL语句语句阐明:$database为要选择的数据库,$query为要执行的SQL语句,$link_identifier为指定的衔接标志符。在运转mysql_db_query()函数时不需求运用mysql_select_db()函数来选择数据库。例如:8.1.3 处置前往结果处置前往结果1. mysql_fetch_row()函数函

10、数运用运用mysql_fetch_row()函数可以从前往的结果集中逐行获取记录,语法格式函数可以从前往的结果集中逐行获取记录,语法格式如下:如下:array mysql_fetch_row(resource $result)参数参数$result指定前往结果集的资源变量名,该函数从指定的结果集中获得一指定前往结果集的资源变量名,该函数从指定的结果集中获得一行数据并作为数组前往。每个结果的列储存在一个数组的单元中,数组的键名默行数据并作为数组前往。每个结果的列储存在一个数组的单元中,数组的键名默许以数字顺序分配,偏移量从许以数字顺序分配,偏移量从0开场。依次调用开场。依次调用mysql_fet

11、ch_row()函数将前往结函数将前往结果集中的下一行,假设没有更多行那么前往果集中的下一行,假设没有更多行那么前往FALSE。例如:。例如: 081101 1 = 王林王林 2 = 1 3 = 1990-02-10 4 = 计计算机算机 5 = 50 6 =)?8.1.3 处置前往结果处置前往结果【例8.2】 获取PXSCJ数据库中女同窗的总学分信息。新建EX8_2.php文件,输入以下代码:?php$conn= mysql_connect(localhost,root,123456) or die(衔接失败);mysql_select_db(PXSCJ, $conn) or die(选择数

12、据库失败);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 ;?8.1.3 处置前往结果处置前往结果运转结果如图8.1所示。图8.1 查看学生信息8.1.3 处置前往结果处置前往结果2. mysql_fetch_assoc()函数函数

13、mysql_fetch_assoc()函数的作用也是获取结果集中的一行记录并保管到数组中,函数的作用也是获取结果集中的一行记录并保管到数组中,数组的键名为相应的字段名。语法格式如下:数组的键名为相应的字段名。语法格式如下:array mysql_fetch_assoc(resource $result)假设结果中的两个或两个以上的列具有一样字段名,最后一列将优先被访问。假设结果中的两个或两个以上的列具有一样字段名,最后一列将优先被访问。要访问同名的其他列,必需用该列的数字索引或给该列起个别名。对有别名的列,要访问同名的其他列,必需用该列的数字索引或给该列起个别名。对有别名的列,不能再用原来的列

14、名访问其内容。不能再用原来的列名访问其内容。例如:例如:?php$conn= mysql_connect(localhost,root,123456);mysql_select_db(PXSCJ, $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学号学号e

15、cho $row姓名姓名. ;/输出输出王林王林?8.1.3 处置前往结果处置前往结果3. mysql_fetch_array()函数函数mysql_fetch_array()函数是函数是mysql_fetch_row()函数的扩展。除了将数据以数函数的扩展。除了将数据以数字作为键名存储在数组中外,还运用字段名作为键名存储。语法格式如下:字作为键名存储在数组中外,还运用字段名作为键名存储。语法格式如下:array mysql_fetch_array(resource $result , int $ result_type )可选的可选的$result_type参数是一个常量,可以是以下值:参数

16、是一个常量,可以是以下值:MYSQL_ASSOC,MYSQL_NUM和和MYSQL_BOTH。假设用。假设用MYSQL_BOTH,将得到一个同时包,将得到一个同时包含数字和字段名作为键名的数组。用含数字和字段名作为键名的数组。用MYSQL_ASSOC将得到字段名作为键名的将得到字段名作为键名的数组功能与数组功能与mysql_fetch_assoc()函数一样,用函数一样,用MYSQL_NUM将得到数字作为将得到数字作为键名的数组功能与键名的数组功能与mysql_fetch_row()函数一样。默许值为函数一样。默许值为MYSQL_BOTH。8.1.3 处置前往结果处置前往结果例如:081101

17、 学号=081101 1=王林 姓名=王林 2=1 性别=1 )?8.1.3 处置前往结果处置前往结果4. mysql_fetch_object()函数函数运用运用mysql_fetch_object()函数将从结果集中取出一行数据并保管为对象,函数将从结果集中取出一行数据并保管为对象,运用字段名即可访问对象的属性。语法格式如下:运用字段名即可访问对象的属性。语法格式如下:object mysql_fetch_object(resource $result)例如:例如:姓名姓名;/输出输出王林王林echo 专业:专业:$row-专业专业;/输出输出计算机计算机?8.1.4 其他其他MySQL函

18、数函数1. mysql_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或或DELET

19、E语句所语句所影响的行数,语法格式如下:影响的行数,语法格式如下:int mysql_affected_rows( resource $link_identifier )$link_identifier参数为曾经建立的数据库衔接标志符。本函数执行胜利那么参数为曾经建立的数据库衔接标志符。本函数执行胜利那么前往受影响的行的数目,否那么将前往前往受影响的行的数目,否那么将前往1。假设最近一次执行的是没有。假设最近一次执行的是没有WHERE子句的子句的DELETE语句,那么表中一切记录都被删除,函数将前往语句,那么表中一切记录都被删除,函数将前往0。留。留意,本函数只对改动意,本函数只对改动MySQ

20、L数据库中记录的操作起作用,对于数据库中记录的操作起作用,对于SELECT语句本语句本函数将不会得到预期的行数。函数将不会得到预期的行数。8.1.4 其他其他MySQL函数函数4. mysql_field_name()函数函数本函数用于获取指定位置的字段名,语法格式如下:本函数用于获取指定位置的字段名,语法格式如下:string mysql_field_name(resource $result , int $field_index)$filed_index参数为要获取字段的位置,用数字表示,例如,参数为要获取字段的位置,用数字表示,例如,1表示第表示第1列。列。5. mysql_field_

21、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_f

22、ield_type()函数类似。函数类似。8.1.4 其他其他MySQL函数函数 7. mysql_free_result()函数函数 语法格式如下:语法格式如下: bool mysql_free_result(resource $result) 本函数将释放一切与结果标志符本函数将释放一切与结果标志符$result所关联的内存。由于在脚本终了后一切所关联的内存。由于在脚本终了后一切关联的内存都会被自动释放,所以仅需求在思索到前往很大的结果集会占用很多关联的内存都会被自动释放,所以仅需求在思索到前往很大的结果集会占用很多内存时才调用本函数。内存时才调用本函数。 8. mysql_create_

23、db()函数函数 本函数用于创建一个新的本函数用于创建一个新的MySQL数据库,语法格式如下:数据库,语法格式如下: bool mysql_create_db(string $database_name, resource $link_identifier ) $database_name参数指定要创建的数据库名。参数指定要创建的数据库名。 9. mysql_drop_db()函数函数 本函数用于删除一个曾经存在的本函数用于删除一个曾经存在的MySQL数据库,语法格式如下:数据库,语法格式如下: bool mysql_drop_db (string $database_name , resou

24、rce $ link_identifier ) 10. mysql_data_seek()函数函数 本函数用于将结果集中的内部指针挪动到指定的行号,语法格式如下:本函数用于将结果集中的内部指针挪动到指定的行号,语法格式如下: bool mysql_data_seek(resource $result , int $row_number) $row_number参数用于指定要挪动到的行号,例如,为参数用于指定要挪动到的行号,例如,为2表示挪动到第表示挪动到第2行。行。8.1.5 实例实例操作课程表操作课程表【例8.3】 运用PHP操作MySQL中的PXSCJ数据库,对课程信息实现查询、添加、删除

25、、修正的功能。建立触发器,假设删除一条记录,那么同时删除成果表中该课程信息。在MySQL客户端输入以下创建触发器的代码:USE PXSCJ;DELIMITER $CREATE TRIGGER KC_DELETE AFTER DELETEON KCB FOR EACH ROWBEGINDELETE FROM CJB WHERE 课程号=OLD.课程号;END$DELIMITER ;新建EX8_3.php文件,输入以下代码。8.1.5 实例实例操作课程表操作课程表运转结果如图8.2所示。在第一个文本框中输入课程号,单击【查找】按钮,假设课程表中有这个课程号,那么下方的表格中会显示各列的内容。在文本

26、框中修正该课程的信息后单击【修正】按钮即可对该课程进展修正,单击【添加】按钮可以添加新的课程,单击【删除】按钮可以删除某门课程,并激活触发器KC_DELETE,同时将成果表CJB中的该门课程的信息删除。图8.2 课程表操作8.2 PHP与与SQL Serveru8.2.1 相关配置相关配置u同同PHP与与MySQL的衔接方法类似,的衔接方法类似,PHP也提供了操作也提供了操作SQL Server的函数库,的函数库,名为名为mssql。但。但mssql函数库在默许情况下是无法运用的,必需安装函数库在默许情况下是无法运用的,必需安装mssql扩展库才扩展库才干运用。用户可以翻开干运用。用户可以翻开

27、php.ini文件查找其中有没有以下这行:文件查找其中有没有以下这行:uextension=php_mssql.dllu假设有,并且最前面没有分号,那么表示曾经安装了假设有,并且最前面没有分号,那么表示曾经安装了mssql扩展。假设没有那扩展。假设没有那么需求用户自行去下载一个与当前么需求用户自行去下载一个与当前PHP版本一样、名为版本一样、名为php_mssql.dll的的DLL文件,文件,将其保管在将其保管在PHP安装目录下的安装目录下的ext文件夹文件夹D:ProjectPHPext下。然后翻开下。然后翻开PHP配置文件配置文件php.ini,在最后加上上面这行代码。,在最后加上上面这行

28、代码。u衔接衔接SQL Server时能够还需求一个名为时能够还需求一个名为ntwdblib.dll的文件,假设找不到该文的文件,假设找不到该文件,用户可以在件,用户可以在php/downloads.php下载相应版本下载相应版本PHP的的zip package紧缩包,在紧缩包,在紧缩包的文件中找到紧缩包的文件中找到ntwdblib.dll文件,将这个文件复制到文件,将这个文件复制到C:/Windows/system32文件夹下。之前所说的文件夹下。之前所说的php_mssql.dll文件也可以在紧缩包文件的文件也可以在紧缩包文件的ext文件夹下找到。文件夹下找到。8.2.1 相关配置相关配置

29、配置任务做好后,重启Apache效力器。翻开phpinfo页面文件夹,假设阅读器中能显示如图8.3所示内容,那么阐明mssql扩展曾经胜利安装。图8.3 mssql扩展8.2.2 建立衔接建立衔接1. 衔接衔接SQL Server效力器效力器PHP衔接衔接SQL Server数据库是经过数据库是经过mssql_connect()函数来完成的,语法格函数来完成的,语法格式如下:式如下:resource mssql_connect ( string $servername , string $username , string $password , bool $new_link )$server

30、name参数是参数是SQL Server的效力器名或本地机器名,的效力器名或本地机器名,$username参数参数指定用于衔接数据库效力器的用户名,指定用于衔接数据库效力器的用户名,$password参数指定相应的密码。参数指定相应的密码。$new_link参数的含义与参数的含义与mysql_connect()函数一样。例如:函数一样。例如:8.2.2 建立衔接建立衔接2. 选择数据库选择数据库与与MySQL一样,衔接一样,衔接SQL Server效力器后也需求选择要运用的数据库,用到效力器后也需求选择要运用的数据库,用到的函数是的函数是mssql_select_db(),语法格式如下:,语法

31、格式如下:bool mssql_select_db(string $database_name , resource $link_identifier )$database_name参数为要选择的数据库名。参数为要选择的数据库名。例如,假设例如,假设SQL Server中曾经创建了学生成果管理数据库中曾经创建了学生成果管理数据库PXSCJ,数据库中,数据库中的表的表XSB、KCB、CJB曾经创建,样本数据也曾经存在设计过程略,表构造和曾经创建,样本数据也曾经存在设计过程略,表构造和样本数据参照第样本数据参照第7章。要选择章。要选择PXSCJ数据库可以运用以下代码:数据库可以运用以下代码:3.

32、封锁衔接封锁衔接封锁衔接运用封锁衔接运用mssql_close()函数,语法格式如下:函数,语法格式如下:bool mssql_close( resource $link_identifier )8.2.3 执行执行T-SQL语句语句PHP中运用mssql_query()函数来执行T-SQL语句,语法格式如下:mixed mssql_query (string $query , resource $link_identifier)mssql_query()函数的格式和用法与mysql_query()函数类似,例如:8.2.4 处置前往结果处置前往结果PHP在处置从SQL Server前往的结果

33、时运用的是mssql_fetch_row()、mssql_fetch_assoc()、mssql_fetch_array()和mssql_fetch_object()函数,格式和用法与MySQL函数库中的mysql_fetch_row()、mysql_fetch_assoc()、mysql_fetch_array()、mysql_fetch_object()函数类似。例如:?php$conn=mssql_connect(0BD7E57C949A420, sa, 123456) or die(衔接失败);mssql_select_db(PXSCJ, $conn) or die(选择数据库失败);

34、$sql=select * from XSB;$result=mssql_query($sql, $conn);while($row=mssql_fetch_array($result)echo $row学号.;?8.2.5 实例实例实现简单的登录实现简单的登录系统系统【例8.4】 制造一个登录系统,实现用户注册、用户登录、用户注销、修正密码等功能。首先需求进展数据库设计,本例中需求创建的数据库名为USERS,数据库中有一个表userinfo,表的构造如表8.1所示。项目名列 名数 据 类 型长度是否可空默认值说 明用户名username不定长字符型(VARCHAR)20无主键,由英文字母、下

35、划线或数字组成密码password不定长字符型(VARCHAR)20无620位字符性别sex位型(BIT)默认值11:男;0:女年龄age整数型(INT)默认值无邮箱email定长字符型(CHAR)30无表8.1 userinfo的表构造8.2.5 实例实例实现简单的登录实现简单的登录系统系统创建USERS数据库的语句如下:CREATE DATABASE USERS创建表userinfo的语句如下:USE USERSGOCREATE TABLE userinfo(usernameVARCHAR(20) NOT NULL PRIMARY KEY,password VARCHAR(20) NOT

36、NULL,sexBITNOT NULL DEFAULT 1,ageINTNULL,CHAR(30)NULL)8.2.5 实例实例实现简单的登录实现简单的登录系统系统接下来进展页面的设计,在EX8_4文件夹下新建以下文件:EX8_4_fun.php文件,用于衔接数据库,代码如下:EX8_4_login.php文件,用户登录页面,代码。EX8_4_regist.php文件,用户注册页面,代码。8.2.5 实例实例实现简单的登录实现简单的登录系统系统EX8_4_main.php文件,主页面,代码如下:?phpsession_start();$userid=$_SESSIONuserid;/获得SES

37、SION值if($userid)echo 欢迎用户.$userid.登录!;echo 查看个人信息 echo 修正密码 echo 注销账户 echo 退出;elseecho 对不起,您没有权限访问本页面;?8.2.5 实例实例实现简单的登录实现简单的登录系统系统EX8_4_select.php文件,用于查看个人信息,代码如下:?phpinclude EX8_4_main.php;/包含主页面$username=$_SESSIONuserid;/获得SESSION值if($username)include EX8_4_fun.php;$sel

38、ect_sql=select * from userinfo where username=$username;$select_result=mssql_query($select_sql,$conn);while($row=mssql_fetch_row($select_result)list($username, $password, $sex, $age, $)=$row;echo 用户名:.$username.;echo 性别:;if($sex=1)echo 男.;elseecho 女.;echo 年龄:.$age.;echo :.$.;?8.2.5 实例实例实现简单的登录实现简单的登

39、录系统系统EX8_4_update.php文件,用于修正密码,代码。EX8_4_delete.php文件,用于注销用户账户,代码如下:?phpinclude EX8_4_fun.php;session_start();$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

40、.href=EX8_4_login.php;elseecho alert(注销用户失败!);location.href=EX8_4_main.php;?8.2.5 实例实例实现简单的登录实现简单的登录系统系统本例的登录页面如图8.4所示,假设没有用户账户,可以单击【注册】按钮,进入注册页面,如图8.5所示。假设已有用户账户,输入后单击【登录】按钮即可进入主页面。图8.4 登录界面图8.5 用户注册页面8.2.5 实例实例实现简单的登录实现简单的登录系统系统主页面如图8.6所示。单击主页面中的各个超链接可实现各个功能,例如,可以查看用户的个人信息、修正密码、注销账户等。修正密码的界面如图8.7所

41、示。 图8.6 主页面图8.7 修正密码8.3 PHP与与Oracleu8.3.1 相关配置相关配置uPHP中提供了一套专门用于衔接中提供了一套专门用于衔接Oracle的函数,这些函数在默许情况下是无的函数,这些函数在默许情况下是无法运用的,必需求在法运用的,必需求在PHP中安装中安装oci8扩展。本书在安装扩展。本书在安装PHP时曾经安装了这个扩时曾经安装了这个扩展,所以这里不需求额外配置。假设要查看展,所以这里不需求额外配置。假设要查看PHP能否曾经安装了能否曾经安装了oci8扩展,可以扩展,可以翻开翻开phpinfo页面,假设能看到如图页面,假设能看到如图8.8所示信息,阐明曾经安装了所

42、示信息,阐明曾经安装了oci8扩展。假扩展。假设没有安装设没有安装oci8扩展,翻开扩展,翻开php.ini文件,找到文件,找到“;extension=php_oci8.dll所在的所在的一行,将前面的分号去掉;假设没有找到该行,那么在文件中添加这一行,保管一行,将前面的分号去掉;假设没有找到该行,那么在文件中添加这一行,保管后重启后重启Apache即可。即可。图8.8 安装oci8扩展8.3.1 相关配置相关配置在运用PHP操作Oracle前,必需保证Oracle数据库曾经安装。本节要衔接的Oracle中的数据库仍为PXSCJ,假设PXSCJ数据库曾经创建创建步骤略,数据库中的三个表也曾经创

43、建,其中,三个表的构造根据Oracle允许的数据类型略有变化,例如,XSB表在Oracle中的表构造如表8.2所示。列 名数 据 类 型长 度是否可空默认值说 明学号定长字符型(CHAR)6无主键姓名定长字符型(CHAR)8无性别整数型(NUMBER)111:男;0:女出生时间日期型(DATE)系统默认无专业定长字符型(CHAR)12无总学分整数型(NUMBER)200总学分160备注不定长字符型(VARCHAR2) 500无表8.2 Oracle中的XSB的表构造8.3.2 建立衔接建立衔接1. 衔接衔接Oracle效力器效力器在在PHP 5.0以后的版本中,衔接以后的版本中,衔接Oracl

44、e时运用时运用oci_connect()函数,语法格式如函数,语法格式如下:下:resource oci_connect(string $username, string $password, string $db )阐明:阐明:oci_connect()函数前往一个大多数函数前往一个大多数OCI调用都需求的衔接标志符。调用都需求的衔接标志符。参数参数$username和和$password分别指定用户名和密码。可选的第三个参数分别指定用户名和密码。可选的第三个参数$db可以包含想要衔接的本地可以包含想要衔接的本地Oracle的数据库实例。例如:的数据库实例。例如:2. 封锁衔接封锁衔接封锁衔

45、接运用封锁衔接运用oci_close()函数,语法格式如下:函数,语法格式如下:bool oci_close ( resource $connection )参数参数$connection为曾经翻开的衔接标志符。例如:为曾经翻开的衔接标志符。例如:8.3.3 执行执行PL/SQL语句语句1. 配置语句配置语句在运用在运用PHP执行执行Oracle的的PL/SQL语句时需求先运用语句时需求先运用oci_parse()函数配置函数配置SQL语句,以备运用其他函数执行,语句,以备运用其他函数执行,oci_parse()函数语法格式如下:函数语法格式如下:resource oci_parse ( re

46、source $connection , string $query )参数参数$query为要配置的为要配置的PL/SQL语句,语句,oci_parse()函数将在函数将在$connection上配上配置置$query并前往一个语句标志符以用于其他函数。并前往一个语句标志符以用于其他函数。2. 执行语句执行语句语句配置完成后,用语句配置完成后,用oci_execute()函数执行一条曾经配置过的语句。语法格函数执行一条曾经配置过的语句。语法格式如下:式如下:bool oci_execute (resource $stmt)参数参数$stmt为曾经解析过的语句标志符。假设函数运转胜利那么前往为

47、曾经解析过的语句标志符。假设函数运转胜利那么前往TRUE,否那么前往否那么前往FALSE。例如:。例如:8.3.4 处置前往结果处置前往结果PHP处置从Oracle前往的结果时经常运用到以下一些函数。oci_fetch_row()函数。运用oci_fetch_row()函数可以从前往的结果集中逐行获取记录,并作为数组前往,每个结果的列储存在一个数组的单元中,数组的键名默许以数字顺序分配,偏移量从0开场。语法格式:array oci_fetch_row ( resource $statement )该函数的用法和功能与mysql_fetch_row()函数类似。参数$statement是由oci

48、_parse()函数创建并曾经由oci_execute()函数执行过的含有语句标志符的资源变量。oci_fetch_array()函数。语法格式:array oci_fetch_array(resource $statement , int $mode )oci_fetch_array()函数是oci_fetch_row()函数的扩展,除了将数据以数字作为键名存储在数组中外,还可运用字段名作为键名存储。可选参数$mode的值可以是:OCI_ASSOC,OCI_NUM和OCI_BOTH。假设用OCI_BOTH,将得到一个同时包含数字和字段名作为键名的数组。用OCI_ASSOC将得到字段名作为键名

49、的数组功能oci_fetch_assoc()函数一样,用 OCI_NUM将得到数字作为键名的数组功能与coi_fetch_row() 函数一样。默许值为OCI_BOTH。oci_fetch_array()函数的用法和功能与mysql_fetch_array()函数类似。8.3.4 处置前往结果处置前往结果oci_fetch_assoc()函数。语法格式:array oci_fetch_assoc ( resource $statement )该函数用法和功能与mysql_fetch_assoc()函数类似。oci_fetch_object()函数。语法格式:array oci_fetch_as

50、soc ( 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_array($statement)echo $row学号. ;?8.3.5 实例实例实现简单的留言实现简单的留言本本【例8.5】 实现一个简单的留言本系

51、统,留言本有查看、添加留言的功能。首先进展数据库设计,本系统运用到的表仍在PXSCJ数据库中创建,表名为Guestbook,表构造如表8.3所示。列 名数 据 类 型长 度是否可空默认值说 明ID整数型(NUMBER)2无留言编号,主键GUESTNAME定长字符型(CHAR)20无留言者姓名POSTTIME日期时间(DATE)默认值无留言时间MESSAGE不定长字符型(VARCHAR2)1000无留言内容表8.3 Guestbook表构造创建表Guestbook的SQL语句如下:CREATE TABLE Guestbook(ID NUMBER(2) NOT NULL PRIMARY KEY,G

52、UESTNAME CHAR(20)NOT NULL,POSTTIME DATENOT NULL,MESSAGEVARCHAR2(1000);8.3.5 实例实例实现简单的留言实现简单的留言本本接下来进展页面的设计,在EX8_5文件夹下新建以下文件。EX8_5_main.php文件,这是系统的主页面,代码如下:进入留言本欢迎进入我的留言本查看留言.我要留言8.3.5 实例实例实现简单的留言实现简单的留言本本EX8_5_mainbody.php文件,用于显示一切的留言,代码如下:?phpdate_default_timezone_set(PRC);/设置时区$conn=oci_connect(sy

53、stem,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语句执行失败); /执行SQL语句echo ;while($row=oci_fetch_array($statement)/获得记录集echo .$rowID./td;echo

54、.$rowGUESTNAME.发表于:;$timeTemp=strtotime($rowPOSTTIME); /将日期时间解析为 UNIX 时间戳$time=date(Y-n-j H:i:s,$timeTemp); /用date函数将时间转换为指定格式echo $time.;echo .$rowMESSAGE./td;echo ;?8.3.5 实例实例实现简单的留言实现简单的留言本本EX8_5_select.php文件,用于查看留言,代码。EX8_5_post.php文件,用于添加留言,代码。EX8_5_delete.php文件,用于删除留言,代码如下:?php$conn=oci_connec

55、t(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;elseecho alert(删除失败);window.location=EX8_5_select.php;?8.3.5 实例实例实现简单的留言实现简单的留言本本运

56、转EX8_5_main.php文件,主页面如图8.9所示。图8.9 留言本主页面8.3.5 实例实例实现简单的留言实现简单的留言本本单击【查看留言】超链接可查看相关留言,例如,输入编号“1查询情况如图8.10所示。图8.10 查看留言页面8.3.5 实例实例实现简单的留言实现简单的留言本本单击查看留言页面的【删除留言】超链接可以删除该留言。单击【我要留言】超链接进入添加留言页面,如图8.11所示。图8.11 添加留言页面8.4 PHP与与AccessAccess普通可以在安装Microsoft Office时选择安装,本书运用的版本是Microsoft Office Access 2019。有

57、关Access的运用方法本书不做引见,只引见运用PHP操作Access数据库的方法。在操作Access前,首先在Access中新建数据库PXSCJ,再新建表XSB,XSB表的构造如表8.4所示。列 名数 据 类 型是 否 可 空默认值说 明学号文本无主键姓名文本无性别数字11:男;0:女出生时间日期/时间无专业文本无总学分数字00总学分160备注备注无表8.4 Access中XSB表的构造8.4.1 建立衔接建立衔接在Access中新建例如数据库后就可以运用PHP进展衔接了。PHP衔接Access的方式与衔接其他数据库不同,PHP中不提供Access的扩展,但可以经过COM组件来完成。COM组

58、件是微软公司为了计算机工业的软件消费更加符合人类的行为方式而开发的一种新的软件开发技术。经过运用COM组件,可以完成对Access的衔接。在建立衔接时,首先需求创建一个COM对象,接着调用对象的open()方法,open()方法的参数是一个衔接字符串,衔接字符串的格式如下:driver=Microsoft Access Driver (*.mdb); dbq=$db; uid=$admin; pwd=$pass例如,要衔接PXSCJ数据库,可以运用以下代码:open(driver=Microsoft Access Driver (*.mdb); dbq=D:PXSCJ.mdb);$conn-c

59、lose();?8.4.2 处置处置SQL语句和前往结果语句和前往结果执行SQL语句可以运用COM对象的execute()方法,例如:$conn-execute(select * from XSB);前往结果将保管为对象,经过访问对象的fields对象可以访问前往的数据,例如:open(driver=Microsoft Access Driver (*.mdb); dbq=D:PXSCJ.mdb);$rs=$conn-execute(select * from XSB);$nums=$rs-fields-count();/前往结果中列的数目echo $nums. ;while(!$rs-eof

60、)/判别能否到最后一个记录echo $rs-fields学号.;/得到“学号列的数据$rs-movenext();/将指针移到下一个记录?8.4.3 实例实例投票系统投票系统【例8.6】 运用PHP和Access制造一个投票系统,投票选出最受欢迎的数据库。管理员可以在后台对投票选项进展添加、修正、删除。首先进展数据库设计,本例中需求创建的数据库名为VOTE,数据库中有一个表polls,表的构造如表8.5所示。项 目 名列 名数据类型是否可空默认值说 明投票主题idid数字无主键投票主题title文本无票数votes数字无表8.5 polls表构造投票的主题读者可以自行设定,本例运用的样本数据如表8.6所示。投票主题

温馨提示

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

评论

0/150

提交评论