版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、互联网软件开发与应用,任课教师:陆铭 联系电话:66134267 QQ: 22839978 PoPo: 教学网站:,任课教师:陆铭 网站:,1,第七章 PHP技术,PHP简介 PHP语言的特点 PHP与其他CGI的比较 PHP工作环境 安装和配置PHP环境 PHP语言基础 PHP数据类型、运算符和表达式 PHP基本语句和操作数据库的命令 PHP访问MySQL数据库 MySQL数据库的安装 MySQL的基本使用 使用PHP操作MySQL数据库,7.1 PHP简介,任课教师:陆铭 网站:http:/mingler.cc
2、,3,PHP语言的特点,服务器端嵌入式脚本描述语言,往往与MySQL数据库同时使用 支持多种系统平台:win9x/NT/2000/Unix/Linux/Solaris 具有自由软件的特性:可自行加入所需代码 版本更新速度快 容易与现有系统的网页整合:提供交互功能,修改成本低 具有丰富的功能: 结构化、对象式设计、数据库处理、网络接口、安全编码机制 系统移植速度快:少量改动,即可迁移,任课教师:陆铭 网站:,4,基于互联网技术的PHP,PHP是一种服务器端嵌入式脚本描述语言,最大特点是数据库层操作功能强大 网络发展早期都是单纯的HTML
3、,近来需要同数据库链接的网页越来越多 PHP之前用Perl、C编写CGI程序 Perl基本上成为了书写CGI程序的一个标准 PHP语言占有很大优势 在保持了与Perl相当能力的前提下加强了对数据库的操作能力 丰富的数据库操作函数可以进行几乎所有的数据库操作 最终要的是PHP可以在几乎所有的平台上运行,Perl的最大优点是对字符串的控制能力特别强。 使用Perl操作数据库需依靠Unix下Perl的DBI.pm实现。 如果要在windows下使用,需使用windows下的数据操作扩展库。这使得程序的跨平台运行变得不可操作,任课教师:陆铭 网站:,5,P
4、HP与其他CGI的比较,编写CGI程序的方式有很多,PHP只是其中的一种 ASP/PHP:嵌入式脚本的方式 Perl/C/C+:独立的程序,需专门安置在/bin/cgi目录中,7.2 PHP工作环境,任课教师:陆铭 网站:,7,PHP工作环境,PHP开始只支持Unix和UnixLike体系的操作系统 SCOUnix、Linux 随着PHP使用的日益增多,感到在缺少集成环境的Linux下开发是件困难事,发展了Winodws下的PHP版 除非实在没有条件构建Unix平台才在windows下进行调试 一般情况下,可以在一台计算机上搭建Linux平台作为服
5、务器,在另一台安装有windows的计算机上通过Telnet进行管理 PHP程序的常规开发方法 在windows环境下编写源代码 通过Telnet在Linux上进行调试和试运行 如此配合使用,可以使工作效率达到最大,任课教师:陆铭 网站:,8,在Linux和Windows下开发PHP,PHP由Linux的发展而流行,Linux对PHP的支持最完美 Linux下的PHP开发环境 程序源码编辑环境 Vi,Emacs(windows的记事本) PHP自身工作环境 Apache,MySQL等 支持PHP的浏览器环境 LYNX(Netscape / IE,在
6、windows下开发PHP程序的最大好处就是可以享用集成环境 Windows下的PHP开发环境 程序源码编辑环境 记事本/专用文本编辑器 Web服务器 IIS / Apache,MySQL,SQL Server PHP浏览器 IE / Netscape,任课教师:陆铭 网站:,9,Windows下安装和配置PHP环境(1,从PHP官方网站上下载php安装压缩包 官方网站: http:/ 在Download目录下可以找到php公布的最新的php安装压缩包 在Linux下习惯于发行软件的源程序,而在windows下则只提供编译后的文件 最新版本是php
7、 4.3.0 包含:Apache、CGI、API、MySQL、ISAPI、NSAPI等 下载后将其解压缩(WinZip/WinRAR)到C:PHP 也可以解压缩到其他地方,如果这样做,则在安装完成后须编辑解压出来的文件中的 .inf 文件 凡是带有 php 前缀的文件可以直接放到php目录下,其他文件只能放在windows/system32下,才能被windows调用 解压缩后,执行安装程序进行安装 php目录下有个php.ini-dish文件,需要将其改名为php.ini,并将其移动到windows目录下,并将其中 extension=php_MySQL.dll 前的注释标记去掉,任课教师:
8、陆铭 网站:,10,Windows下安装和配置PHP环境(2,使用IIS服务器安装PHP 修改完php,ini文件后,鼠标右击php_iis_reg.inf文件,在弹出的菜单中选择“安装”将PHP安装到系统中 安装完毕后必须重新启动计算机,安装过程中修改的参数才能有效 重新启动后即可使用 安装和使用过程中有不清楚的地方,可以随时打开求助文件了解操作要点 在Windows下构建Apache平台运行PHP 除了可以在IIS中安装PHP外,还可以在windows环境下构建Apache平台 首先到Apache网站上下载Apache在Windows下的应用程
9、序 下载后解压缩安装,安装完成后需要对Apache做一些特别的设置 在http.conf 或 srm.conf中增加一行信息: Apache application / x httpd-php php / php.exe Apache applicaion / x httpd php.php,任课教师:陆铭 网站:,11,Linux下安装和配置PHP环境,在Linux下,程序以源码形式发布,需从源码开始编译并安装,相比Windows下稍微复杂些 首先从php官方网站上下载php源码,如:php-4.3.0.tar.gz 这是一个压缩文件,.gz表示
10、是经过gzip压缩的文件,.tar表示这是一个包文件。Linux文件压缩时有个习惯:先将文件打包,然后再压缩 将压缩文件用gunzip和tar进行解压缩和解包 gunzip php-4.3.0.tar.gz tar xvf php-4.3.0.tar 解压后的Linux源码中往往有一个脚本程序,可以直接使用该脚本程序configure进行编译,但这样编译出来的文件安全性差 一般使用配置项进行指定以获得最适合的程序 运行./configure help|more可以查看相关的选项 编译时可选择编译成外部 CGI程序 还是 Apache内嵌模块 建议最好将对MySQL的支持部分编译进去,任课教师:
11、陆铭 网站:,12,几个常用的Unix命令,gunzip 对后缀为.gz的压缩文件进行解压缩操作 tar 对后缀为.tar的打包文件进行解包操作 cd 设置当前文件目录路径 make 对源码文件进行编译操作 make install 经编译后的结果安装到当前目录下 make test 测试安装结果命令 make bench 评估安装结果和性能 cp 文件复制操作命令 ./ 表示当前目录 ./ 表示当前目录的父目录,任课教师:陆铭 网站:,13,配置php环境,PHP环境的配置主要是通过php.ini文件
12、进行的 PHP环境配置的信息对整个PHP环境都有效, 如果要改变相关的环境因素, 只要修改环境配置文件php.ini即可 环境配置文件的读取 以内置服务器模块方式运行的PHP,在启动服务器时读取 以CGI方式运行的PHP,每次调用时都发生调用 对于Apache+PHP的配置信息 Apache的配置文件为:httpd.conf 或 srm.conf PHP的配置文件为:php.ini 依据环境参数位置的不同,修改httpd.con(srm.conf) 或 php.ini,7.3 PHP语言基础,任课教师:陆铭 网站:,15,7.3.1 PHP语言中的
13、简单约定,PHP代码在html中嵌入形式 这两种是php语言的标准形式 使用php代码在客户端的浏览器进行页面输出时,页面的源代码中只有一些标准的HTML代码 php引擎在服务器端过滤了文件的内容,对其中的代码进行了处理,转换成了标准的HTML代码,并发送到客户端的浏览器,使用这两种形式时需避免与XML或ASP语言发生冲突,任课教师:陆铭 网站:,16,PHP语句的脱离形式与程序注释,PHP语句的结束(脱离)形式 与C语言相同,PHP程序语句是以“;”为结束标志的 在嵌入符号“ ? ”之前的一句php语句可以不写“;”就结束 程序注释 可以使用C、
14、C+、Unix Shell语言的注释方式 / 或 # - 单行式,如:/ One line. 、 # One line. /* */ - 多行式,多行式的注释不能相互包含 示例 / /* */ /* /* */ */ /* / *,任课教师:陆铭 网站:,17,7.3.2 变量的声明和文件的引用,变量声明 PHP是一种弱类型声明语言,与VBScript、Javascript相似,变量声明时不需要特别说明变量的类型,而且往往在变量声明的同时进行变量初值的赋值 PHP变量声明格式:$变量名 = 表达式或值; $title = “Hello, world
15、!” ; 头文件的引用 所谓头文件是指这样的一类文件,其中包含了大量的常量、通用函数和通用过程,它的内容可以为各个程序文件所引用 引用头文件可以加快程序开发的速度,减少程序开发难度 在php程序中可以像C语言一样,对头文件进行引用 引用格式 Require(“文件名”); 静态引用. Include(“文件名”);动态引用,不论是否真的需要使用,引用的文件都将作为主程序的一部分来运行。出错时,给出错误信息并终止程序的运行,仅在确定需要使用其中的常量或函数时,文件才会被加入到主程序中。出错时,仅给出错误信息,程序照常运行,任课教师:陆铭 网站:,18
16、,复合语句,=为赋值语句,while为当型循环,数据库操作函数,数据库选择函数,7.3.3 数据库操作命令,先看一个简单例子 n; echo 姓名职位n; while ($myrow=MySQL_fetch_row($result) printf(%s%s%s, $myrow1, $myrow2, $myrow3); echo n ,变量,数据库链接号,主机名,用户名,口令,归纳:数据库操作的基本步骤 链接数据库服务器:MySQL_Connect(localhost, user, passwd); 选择一个数据库:MySQL_Select_db(mydb, $db); 对数据库进行具体的操作:
17、 MySQL_query(select * from employees, $db); 处理记录:MySQL_fetch_row($result,假设:已经在MySQL中创建了一个名为mydb的的数据库,其中含有一个数据表employee,具有“姓名”、“职位”等字段,注意:php中对变量、标识符等区分大小写,数据库链接函数,任课教师:陆铭 网站:,19,7.3.4 一个完整而简单的PHP程序,Sample.php php程序示例 $hello ; ,说明:php是服务器端的嵌入式脚本描述语言,php程序必须放置在服务器端,在服务器上供客户端的浏览
18、器执行,即类似ASP程序,不可在客户端直接浏览,7.3.5 PHP的数据类型、运算符和表达式,任课教师:陆铭 网站:,21,PHP的数据类型,PHP支持多种数据类型 Integer 整型、Double 浮点型、String 字符串 Array 数组、Object 对象、pdfinfo和pdfdoc PDF信息 PHP不是强类型说明语言,在程序中可以不必事先进行数据类型的声明,PHP解释器会自动对数据类型进行判断 在第一次赋值时,PHP根据上下文决定变量的数据类型,PHP中的常量,PHP中对常量的类型要求是不严格的 常量分为预定义常量和自定义常量两种
19、 预定义常量:PHP内部事先已经定义了的常量 预定义常量有多种不同的开头,决定了各种不同的类别 P.149 自定义常量:由用户自行依据程序的需要来定义的常量 自定义常量的定义格式: define (“常量名”, 表达式或值) 例:define (“CONSTANT”, “Hello, World.”) 示例,任课教师:陆铭 网站:,23,再谈PHP中的变量,变量的概念 变量是通过一个标识、类型来应用内存,通过标识、类型和可选的数值来定义变量 每一个变量都有一个作用的范围,定义了变量的可见性和生命周期 变量的定义 $变量名 = 初始值 变量的类型 详
20、见P.149,通常情况下不需要声明类型,但可使用cast或settype进行强制类型转换 变量的初始化 一般只要直接赋值即可,如:$int1=1998,$ln=a new line.n,$st=php 数组初始化:$数组名=array( , , , ),如:$name=(张三, 李四) 数组变量的引用:$数组名i, i=0,1,2,,如:$name0,$name1 i 称为数组的下标,下标的取值从0开始,变量定义 $name,你好! ; echo 你的账号是:$account。 ; echo 你现在账上的余额是:$balance。 ; ,任课教师:陆铭 网站:http:/mingler.ccs
21、,24,变量的作用域,一般情况下,PHP变量仅仅只有有限的活动范围 在用户自定义的函数中有“本地函数范围”的概念 所谓“本地函数范围”是指所有函数中的变量不经特别声明,都仅仅在函数内有效,函数外定义的变量在函数内无效 一般情况下,变量均为局部的(本地),除非用以下两种方法之一指定其全局属性 使用global关键字作再定义 使用$GLOBALS数组,该数组可以不用声明,可以直接使用,变量作用域 $a没有在函数内说明,没有任何结果输出,变量作用域 输出结果为:3.008,9558884.000,变量作用域 输出结果同样为:3.008,9558884.000,任课教师:陆铭 网站:htt
22、p:/,25,静态变量,静态变量仅仅在本地函数的活动范围中存在 通常情况下,变量的生命周期仅在一次调用中 在用户自定义函数中的变量,调用结束,变量就释放了 即函数调用结束,变量消亡;下次调用,重新设置变量 静态变量能够使变量在函数调用结束后仍保持不变 要想使变量能够保持一段时间,须使用静态变量,因为变量$a的初始值为0, 所以函数调用后输出结果为0,然后变量$a增1,$a+,此时变量$a的值为1,但函数运行结束,变量全部释放,变量$a不再存在,变量$a的初始值仍为0,第一次函数调用后的输出结果为0,然后变量$a增1,$a+,此时变量$a的值为1,因为变量$a是
23、静态变量,函数运行结束后,变量不会释放,变量$a仍然存在;第二次调用该函数时,不再做新的初始化操作,直接取出该变量的值使用。结果是每次输出的值比上次的大1,任课教师:陆铭 网站:,26,递归函数和递归调用,递归是程序设计中常用的一种程序设计方法 递归的含义就是用自己的定义来说明自己 递归函数就是具有函数自身调用功能的函数 这种调用就称为递归调用 递归函数中使用静态变量能够使值发生传递,是一种很重要的应用方法 为了避免死循环,在设计递归函数的时候,必须有一个明确的且必定会发生的条件来终止函数的递归调用,函数第一次调用: $count = 0,$cou
24、nt + 1,输出 1,$count 10 函数被第二次调用: $count = 1,$count + 1,输出 2,$count 10 函数被第三次调用: $count = 2,$count + 1,输出 3,$count 10 函数被第四次调用: $count = 3,$count + 1,输出 4,$count 10 函数被第十次调用: $count = 9,$count + 1,输出 10,$count = 10 $count-,返回。然后依次$count-,返回,任课教师:陆铭 网站:,27,活动变量,活动变量类似于语言中的指针 所谓活动
25、变量,是指动态地设置和使用一个变量的名称 示例 一个普通变量的声明:$a = “hello”$a为普通变量,值为hello 一个活动变量的声明:$a = “world” 活动变量将$a的值作为变量名,并赋值world echo “$a $a”; echo “$a $hello” ; 活动变量的好处是可以动态地引用/设置一个变量的名字 数组中使用活动变量 $ai 可表示为 $ai 作为变量名,下标变量$a的第i个变量,$ai 可表示为 $a 作为变量名,a变量值为变量名组成的数组的第i个分量 $ai,任课教师:陆铭 网站:,28,外部PHP变量(1,
26、由客户端提供的信息,在PHP中被视作外部的变量得到响应 HTML表单 当表单被提交后,PHP脚本将自动设置从表单获得的变量为可用变量 在php_track_var特性打开的情况下,可使用全局联合数组:$HTTP_POST_VARS、$HTTP_GET_VARS 图象提交变量名字 当提交表单的按钮视一个图象按钮时,表单程序会使用两个附加的变量_x和_y来记录用户点击在该图片上的位置信息。 (sub_x,sub_y) HTTP cookies 可使用setcookie()函数对cookie进行设置 任何从服务器发送到客户端的cookies将自动转化为一个PHP变量 如果希望对单个的cookie指派
27、多个值,只要使用cookies数组即在cookie的名字后加 Setcookie(MyCookie , Testing, time()+3500,任课教师:陆铭 网站:,29,外部PHP变量(2,环境变量 PHP自动使用环境变量作为普通变量:echo $HOME PHP可使用内置函数读取外界的环境变量信息:getenv( ); PHP可使用内置函数设置外界的环境变量值:putenv(,任课教师:陆铭 网站:,30,数据类型的自动转换,PHP不需要在声明变量时确定它的变量类型,一个变量的类型是由这个变量被
28、使用的前后关系来决定的 PHP自动转换类型的典型例子是运算符“+” $var = “0” $var为字符串变量 “0” $var + $var仍为字符串变量 “1” $var += 1 $var转换为一个整数 2 $var = $var + 1.3 $var成了一个双精度数 3.3 $var = 10 + “5 littles” $var保存的将是数值 15 当字符串转换成整数时,若字符串的开始为数字串,则取该数值为字串的值,否则取0值,任课教师:陆铭 网站:,31,类型转换规则,确定一个变量的类型 因为PHP自己决定变量的类型,并且常常按需要转换
29、变量的类型,所以一个变量的类型往往不是在任何时刻都很明确的 PHP有一些函数可以找出一个变量的确切类型 gettype( )、is_long( )、is_array( )、is_string( )、is_object( ) 类型转换 PHP中变量除了可自行转换外,还可以被要求强制转换。强制转换时,将需要的类型名写在变量前的括号内即可 $var = 10; $bar = (double) $var; 字符串转换 当一个字符串被当作数值来计算时,它的结果和类型如此确定 字符串中含有“”、“e”或“E”,则被当作双精度类处理,否则作整数处理 字符串以任何有效的数字开头,则这个数字就是字串参加运算的值
30、,否则为0 初始化对象 初始化一个对象用new语句,class foo function do_foo () echo Now doing foo. ; $bar = new foo; $bar - do.foo(); 上述程序中,class 部分为对象的说明部分, $bar = new foo; 为对象初试化操作 $bar-do.foo ( ); 为对象中的函数调用,任课教师:陆铭 网站:,32,PHP的数组处理,数组初始化 使用连续的指定值进行数组的初始化,连续指定时不需指明标号 例:$name =张为; $name =李文; $name =赵
31、悦; 下标为 02 数组的最小下标是0,不是1 数组的操作 PHP同时支持标量数组(Scalar Array)和关联数组(Associative Array),实际使用中不会感到两者之间的任何区别 通过使用函数创建数组:list() 或 array() 通过赋值创建数组:$a0=abc; $a1=Smith 通过函数处理数组:asort( ), arsort( ), ksort( ), rsort( ),sort( ), unsort( ), usort( )等函数可用于排序,count( ) 用于统计数组中的元素个数,next( ), prev( ), each( )等函数可用于遍历数组,任
32、课教师:陆铭 网站:,33,基本运算符,算术运算符 +、-、*、/、( )、mod( )等 字符运算符 连接符 $a=“Hello”; $b=“World”; $c = $a $b 赋值运算符 =、+=、=、-=、*=、/= 等,除=外其他运算符称为复合运算符 位运算符 按位进行运算的符号: $b=$a 也可以表示为 $b = $a = 5,任课教师:陆铭 网站:,37,关于前递增与后递增,前递增 在读出变量的值之前递增变量的值,表示为 +$var 后递增 在读出变量的值之后递增变量的值,表示为 $va
33、r+ 组合操作符表达式 $a += 3; $b *= 6; $x -= 5; 前/后递增表达式的应用 $b = $a = 5;$c = $a +;$e=$d=+$b;$g -= $b $f = $g += $e+;$h=$g += 12; 表达式与语句 表达式可以是语句,但不是所有表达式都是语句 $a=5 是一个表达式,但不能由其自己构成一个语句,而$b = 5:却是一个有效的语句,任课教师:陆铭 网站:,38,条件控制语句,if (expr) statements; if (expr) statements1 else statements2 i
34、f (expr1) statements1 elseif (expr2) statement2 else statements3 if (expr) : statements; else : statements; endif,单一执行语句形式的if控制语句 if ($a$b) print a is bigger then b,多执行语句形式的if控制语句 if ($a$b) $t = $a; $a = $b; $b = $t; print a if bigger then b.,嵌套的if语句 if ($a$b) print $a; print $b; print “a is bigger
35、then b.” elseif ($a=$b) print “a is equal b.” else print “a is smaller then b.”,PHP的if控制语句与HTML语句交互的语法 PHP使用了一种特殊的方法将HTML语言嵌套在if语句中。方法是在if表达式之后跟随一个冒号:,然后嵌入HTML语句,最后用endif结尾 A = 15 now.,对PHP条件控制语句和循环控制语句中的逻辑表达式而言,具体的值无关紧要,只要确定其值为True或False,所以,PHP对于这些表达式的结果只要非零的数值都是True,零是False,0/0/空串为False,其他(包括负数)为T
36、rue;对数组和对象,无任何元素的为False,否则为True,任课教师:陆铭 网站:,39,循环控制语句,while (expr) statements; while (expr): statements; endwhile; do statements; while (expr) break continue,当型循环,循环前检测,循环次数0。示例:,当型循环的交互形式,循环次数0。示例:,当型循环,循环后检测,循环次数1。示例:,终止当前循环的执行,并跳出当前循环。当然,break不仅仅适用循环,也可应用在条件分枝上。 示例:,执行本语句将结
37、束本次循环,跳到循环体的开始处,接着进行下一次的循环判定,也称为“短路循环” 。,任课教师:陆铭 网站:,40,FOR循环语句,For (expr1; expr2; expr3) statements; 这是php中最复杂的循环形式 expr1:在循环开始前无条件的被求解执行 expr2:每次循环开始时被执行,结果为真则循环继续;结果为假则循环结束 expr3:每次循环结束时被执行 一般情况下,expr1用来确定循环控制变量的初值,expr2用来确定循环控制变量的终值,expr3用来调整循环控制变量的值 任何一个表达式都可以是空的。expr2为空则
38、循环次数不确定 For循环也支持交互的“冒号语法” For (expr1; expr2; expr3) : statements; ; endfor,使用for循环时,同一个问题可以有多种表示形式,例:要求打印输出数字110。 第一种方法: 第二种方法: 10) break; print $k; ,第三种方法: 10) break; print $k; $k+; ? 第四种方法:,任课教师:陆铭 网站:,41,Switch语句,Switch是多路分支语句,虽然可以通过多重嵌套的if语句来实现多路分支,但嵌套越深,程序的可读性越差 Switch语句的
39、语法 switch (var) case val1: statements1; case val2: statwments2; case valN: statementsN; default: statements;,几点说明: 1) case语句的个数并没有规定,可以无限制增加; 2) 最后的default是表示在前面所有可能的取值都不满足时的处理方式,但不是必须的,可以没有 3) switch语句是依序逐条执行的,直到switch体的结束,或者遇到了break语句,switch语句才停止执行。所以,如果在一个分支语句的后面没有写上break语句,则程序将继续执行下一个分支语句的内容,任课教
40、师:陆铭 网站:,42,Require和Include语句,require(文件名) 头文件包含语句,静态包含,始终以指定的文件来替代 include(文件名) 头文件包含语句,动态包含,执行到该语句时才会用指定的文件来替代 根据以上特定,include语句可以出现在循环控制结构中,以便按需包含不同的头文件;require语句不能出现在循环控制语句中,不能实现按需包含的要求 特殊要求 include语句出现在if语句中时,必须封闭在一个语法块中,files = array(first.inc, second.inc, third.inc); For
41、 ($k=0; $kcount($files); $k+) include($files$k);,If ($cond) if ($cond) include($file); include($file); Else else include($other); include($other); 错误的用法 正确的用法,任课教师:陆铭 网站:,43,PHP的自定义函数,函数定义的一般形式 function fun_name($arg1, $arg2, $argN) statements; return $ret_val; 函数中可以使用任何有效的PHP
42、代码,甚至是其他的函数或类的定义 返回值 函数通过return语句返回结果,返回值可以是任何类型的,包括列表、对象。函数不能直接返回多个值,但可以通过返回列表的方式实现。 参数 外部信息通过参数表传递给函数。Php支持值传递方式(默认方式) ,也支持地址传递方式。可以定义形式参数为变量参数,也可以直接传变量地址,函数体。是实现某种功能的语句的有序集合,函数的返回值,常量、变量,均为值传递。即传递后不改变传递的信息本身,通过使用变量参数的方式进行地址传递,方法是在引用的变量前加上符号 function add_item($artnr, $num) $this-items$atrnr += $nu
43、m; function remove_item($artnr, $num) if ($this-item$artnr $num) $this-item$artnr -= $num; return true ; else return false ;,示例2 Class Data Var $item; $cname; $cage; function add_item($name, $age, $num) $this-item$num = $num; $this-cname$num = $name; $this-cage$num = $age; function remove_item($num)
44、 $n = count($this-item ); for ($k=$num; $kcname$k = $this-cname$k+; $this-cage$k = $this-cage$k+;,任课教师:陆铭 网站:,46,类变量的创建和类的扩充,自定义类的变量创建 $my_cart = new Cart; $my_data = new Data; 添加数据记录或删除数据记录 $my_cart-add_item(20, 1) $my_cart-remove(20, 2) $my_data-add_item(David, 42, 1); $my_d
45、ata-remove(3); 类构造器 类中的构造器是创建类的新变量时自动调用的函数 类中与类名相同的函数就是类构造器 类构造器可以是带有默认值的 P.173 Class Auto_cart extends Cart function Auto_cart ( ) $this-add_item (“10”, 1),类的扩充 扩充的类拥有基类的所有变量和函数,并且拥有在扩充类中新定义的变量和函数 扩充类定义时使用extends关键字 Class New_Cart extends Cart var $owner; function set_owner($name) $this-owner = $na
46、me 这里定义了一个新类new_cart,是类cart的扩充类,它除了拥有新定义的变量$owner和函数set_owner以外,还继承了父类的所有变量$items和函数add_item,remove_item,tem:10, $num=1) ($item, $num,带参数的类的变量的创建: $new_cart1 = new Auto_cart( ) ; $new_cart2 = new Auto_cart(20, 16),7.4 PHP访问MySQL数据库,任课教师:陆铭 网站:,48,MySQL数据库的历史,SQL-Structured Que
47、ry Language MySQL之前,在互联网上广泛使用的是mSQL(miniSQL) mSQL小型、简单,但不完全支持SQL,且不太安全 MySQL由瑞典T.c.X公司开发的功能强大、快速而价钱低廉的数据库软件,具有伸缩性、完全支持SQL、支持ODBC、比较安全 MySQL的特点 对于多数Unix平台与应用程序,MySQL可以免费获得 MySQL是多线程、多用户的数据库系统 MySQL支持多平台 支持SQL92标准,可以使用所有的select和where语法 提供多种API(包括C+、Eiffel、Java、Perl、PHP、Python、TCL等) 具有丰富的数据类型(1,2,3,4,8
48、字节的Integer、Float、Double、Char、Varchar、Text、Data、Time、Datetime、Timestamp、Year、SET、Enum) 可从多个数据库中混合不同的表格(直接构成逻辑视图) 完全支持ODBC,可在win9x/NT上使用Access数据库,缺省用户的权限是全部可读写的,不太可靠,MySQL与PHP的结合让编写基于数据库的应用程序非常容易。 编译时Apache已经将PHP包含其中,系统连接MySQL监控程序的负载及其轻微。 MySQL是一种小型的SQL数据库,整体性能比mSQL有提高。 MySQL的最大优势在于数据库检索的速度,任课教师:陆铭 网站
49、:,49,MySQL与其他数据库的比较,Oracle 大型数据库,稳定、安全 在数据库检索上采用了复杂算法,不适合小型简单应用场合 Access 小型数据库系统,适合于使用微软平台、访问量较小的场合 SQL Server 适合于使用微软平台、质量要求一般的场合 主要特点是容易使用,不适合高性能要求的场合 MySQL 小型、稳定、安全、数据库性能较高,任课教师:陆铭 网站:,50,MySQL数据库的安装,MySQL安装包的获取 从网站上下载MySQL安装包 可下载windows平台的MySQL安装包,也可
50、以下载Unix下的 Windows环境下安装MySQL 将获得的安装包解压缩,然后运行安装程序 除了MySQL安装包外,还要从网站上下载MyODBC的驱动程序,以便可通过其他应用程序与MySQL相连 在win9x下安装MySQL 安装TCP/IP协议:MySQL是使用TCP/IP协议连接客户端和服务器的 安装MySQL(若安装目录不是缺省目录,可先安装在缺省目录中,然后再移动到指定目录的办法,移动后须使用“MySQL basedir 新目录名”启动) 选择MySQLd或MySQLd opt运行方式 启动MySQL服务:在命令窗口内运行“ MySQLd ” 终止MySQL运行:在命令窗口内执行“
51、 MySQLadmin u root shutdown,使用调试和自动内存管理的方式编译,使用对Pentium优化的版本,在中国地区有两个镜像站点可供快速下载: 、M,任课教师:陆铭 网站:,51,MySQL数据库的安装(续1,在WinNT平台下安装MySQL 安装过程与win9x下基本相同,所不同的是,必须在NT上安装service pack 3或以上版本,且最好把MySQL安装成为服务器 安装命令:MySQLd nt install 启动MySQL服务命令:Net Start MySQL 关闭MySQL服务命令:Net Stop MySQL 在
52、Linux平台下安装MySQL 两种安装模式 RPM(二进制代码形式):安装最为方便,但不可定制,可能未必运行在最高性能上 Src(源代码形式):可以定制安装,可使用更多的个性化选项,但安装起来较为麻烦,任课教师:陆铭 网站:,52,MySQL数据库的安装(续2,RPM包方式安装Linux环境下的MySQL 确认已经安装了RPM软件 确认是以root身份登陆系统的 将MySQL安装包复制到Linux的机器上,或者是Linux可以访问的驱动器上 确认将要安装的MySQL包含了两个RPM包:The server for i385 systems 和 C
53、lien programs for i386 systems 在安装目录下运行以下命令 rpm ivh MySQL 3.xx.xx.i386.rpm rpm ivh MySQL client 3.xx.xx.i386.rpm 在根目录下运行 setup 启动MySQL,并且可以在随后出现的对话框中选择“System Services”,再选择MySQL的启动方式(自动启动/手动启动) 终止MySQL的数据库服务 /etc/rc.d/init.d/MySQL stop 关闭后的重新启动 /etc/rc.d/init.d/MySQL start,链接测试 使用 MySQL u root MySQL
54、 命令进行测试,如果能显示MySQL的版本信息,并最终出现 MySQL ,表示安装成功。可以用 exit 命令返回到系统提示符下,任课教师:陆铭 网站:,53,链接测试,安装完成后通过链接测试来检验是否完成正确地安装了整个数据库,可以使用任何MySQL命令进行监测 常用 MySQL u root MySQL 命令直接对MySQL进行访问,如果正常,则会返回如下消息 Reading table information for completion of table and column names You can turn off this feat
55、ure to get aqicker startup with A welcome to the MySQL monitor. Commands end with; or g. Your MySQL connection id is 21 to server version: 3.22.27 Type help for help MySQL 安装正确,执行 exit 命令返回系统提示符,任课教师:陆铭 网站:,54,MySQL中的应用程序,MySQL中有大量的应用程序,使用MySQL其实就是使用MySQL中的应用程序 MySQL中的程序包括客户端程
56、序、数据库管理程序、数据备份工具等 MySQL程序都是基于命令行的,含有大量的参数支持其强大的功能 为了便于用户对参数应用的了解,每个程序都带有一个特别的参数:help,使用这个参数可以查看本程序允许使用的参数、参数的作用、用法等使用简介,任课教师:陆铭 网站:,55,MySQL数据库服务的启动与终止,开机、关机时的自动启动与终止 使用脚本程序 MySQL_server 在系统运行期间的数据库重启操作 关闭数据库:MySQL u root p xxxx shutdown 开启数据库:safe_MySQLd 直接修改MySQL权限表安全性弱 示例 S
57、hell MySQL u root p mysql MySQL Grant all privileges on *.* to melocalhost identified by something with Grant Option; MySQL Grant all privileges on *.* to me% identified by something with Grant Option; MySQL Grant reload, process on *.* to adminlocalhost ; MySQL Grant usage on *.* to dummylocalhost,
58、用户名,主机名,口令,将me用户设置成拥有高于匿名用户的优先权,该用户为无密码登录的、且拥有reload和process权限的用户,该用户为无密码登录的无任何权限的用户,表示无任何权限的用户,任课教师:陆铭 网站:,64,使用Insert语句为MySQL添加新用户,ShellMySQL u root MySQL MySQLInsert into user values(localhost, me, Password(something), Y,Y); MySQLinsert into user values(%, me, password(some
59、thing), Y,Y); MySQLinsert into user set host=localhost, user=admin, reload_priv=Y, process_priv=Y; MySQL Insert into user (host, user, password) values (localhost, dummy, ); MySQLFlush privileges,该用户为无密码登录的无任何权限的用户,因为MySQL库中默认的权限为“N,任课教师:陆铭 网站:,65,域中任意一台机器登录的用户账号,MySQLGrant on
60、 *.* to myusername%, , ldentifirf by mypassword 或 MySQLinsert into user values (%, myusername, password(mypassword); MySQLFlush privileges,任课教师:陆铭 网站:,66,解决权限错误,连接MySQL数据库被拒 是否在安装数据库之后运行了MySQL_install_db程序进行初始化的权限设置 出现Access denied for user:unknow to database MySQL 表示权限表中无此用户账
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农行内部处罚制度规定
- 员工内部借款制度
- 员工内部认证制度范本
- 售后人员内部管理制度
- 商场内部装修电线报备制度
- 因私休假内部管理制度
- 园区内部伙食管理制度范本
- 如何看待公司内部调整制度
- 学校内部事故管理制度
- 学校内部教学质量评价制度
- 2026年公立医院信息科工作人员招聘考试笔试试题(含答案)
- 第一单元《写作:考虑目的和对象》八年级语文下册同步课件(统编版新教材)
- 2025~2026学年新版教科版六年级下册科学教学计划
- 2026上海烟草机械有限责任公司招聘9人笔试参考题库及答案解析
- 2026银行间市场数据报告库(上海)股份有限公司招聘30人笔试参考题库及答案解析
- 电梯应急处置预案和应急救援措施方案
- 妇科妇科肿瘤靶向治疗护理
- 2026及未来5年中国凝血酶行业市场供需态势及未来趋势研判报告
- 2024年首都医科大学辅导员招聘考试真题汇编附答案
- 2025年全国较大安全生产事故及重大自然灾害简记
- 2026年江西科技学院单招职业技能测试题库含答案
评论
0/150
提交评论