版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
互联网软件开发与应用任课教师:陆铭联系电话:66134267QQ:22839978PoPo:richard.du@163.com教学网站:任课教师:陆铭网站:/1第七章PHP技术PHP简介PHP语言的特点PHP与其他CGI的比较PHP工作环境安装和配置PHP环境PHP语言基础PHP数据类型、运算符和表达式PHP基本语句和操作数据库的命令PHP访问MySQL数据库MySQL数据库的安装MySQL的基本使用使用PHP操作MySQL数据库任课教师:陆铭网站:/27.1PHP简介任课教师:陆铭网站:/3PHP语言的特点服务器端嵌入式脚本描述语言,往往与MySQL数据库同时使用支持多种系统平台:win9x/NT/2000/Unix/Linux/Solaris具有自由软件的特性:可自行加入所需代码版本更新速度快容易与现有系统的网页整合:提供交互功能,修改成本低具有丰富的功能:结构化、对象式设计、数据库处理、网络接口、安全编码机制系统移植速度快:少量改动,即可迁移任课教师:陆铭网站:/4基于互联网技术的PHPPHP是一种服务器端嵌入式脚本描述语言,最大特点是数据库层操作功能强大网络发展早期都是单纯的HTML,近来需要同数据库链接的网页越来越多PHP之前用Perl、C编写CGI程序Perl基本上成为了书写CGI程序的一个标准PHP语言占有很大优势在保持了与Perl相当能力的前提下加强了对数据库的操作能力丰富的数据库操作函数可以进行几乎所有的数据库操作最终要的是PHP可以在几乎所有的平台上运行Perl的最大优点是对字符串的控制能力特别强。使用Perl操作数据库需依靠Unix下Perl的DBI.pm实现。如果要在windows下使用,需使用windows下的数据操作扩展库。这使得程序的跨平台运行变得不可操作。基本的HTML文档HTML文档HTML文档(.htm/.html)++CGI程序ASP/PHP程序(Perl/C)对字符串控制力特强在windows在各种平台平台下运行运行依靠Unix下的DBI.pm依靠windows(Unix,Windows)访问数据库下的API访问Linux等,可访问数据库多种类型数据库内嵌的脚本代码是独立的程序任课教师:陆铭网站:/5PHP与其他CGI的比较编写CGI程序的方式有很多,PHP只是其中的一种ASP/PHP:嵌入式脚本的方式Perl/C/C++:独立的程序,需专门安置在…/bin/cgi目录中
平台性稳定性开发及维护时间与网页的结合能力安全性功能及升级PHP多平台较强较易内嵌,结合较好较好升级最快NSAPI只能—开发时间较长不能内嵌较弱随服务器
Netscape
稳定后效率最佳ISAPI只能IIS较弱同上不能内嵌最差随服务器ASP只能IIS较弱较易内嵌,结合较好最差随服务器CGI无限制强视开发工具语言不能内嵌最好无限制任课教师:陆铭网站:/67.2PHP工作环境任课教师:陆铭网站:/7PHP工作环境PHP开始只支持Unix和UnixLike体系的操作系统SCOUnix、Linux随着PHP使用的日益增多,感到在缺少集成环境的Linux下开发是件困难事,发展了Winodws下的PHP版除非实在没有条件构建Unix平台才在windows下进行调试一般情况下,可以在一台计算机上搭建Linux平台作为服务器,在另一台安装有windows的计算机上通过Telnet进行管理PHP程序的常规开发方法在windows环境下编写源代码通过Telnet在Linux上进行调试和试运行如此配合使用,可以使工作效率达到最大任课教师:陆铭网站:/8在Linux和Windows下开发PHPPHP由Linux的发展而流行,Linux对PHP的支持最完美Linux下的PHP开发环境程序源码编辑环境Vi,Emacs(windows的记事本)PHP自身工作环境Apache,MySQL等支持PHP的浏览器环境LYNX(Netscape/IE)在windows下开发PHP程序的最大好处就是可以享用集成环境Windows下的PHP开发环境程序源码编辑环境记事本/专用文本编辑器Web服务器IIS/Apache,MySQL,SQLServerPHP浏览器IE/Netscape任课教师:陆铭网站:/9Windows下安装和配置PHP环境(1)从PHP官方网站上下载php安装压缩包官方网站:在Download目录下可以找到php公布的最新的php安装压缩包在Linux下习惯于发行软件的源程序,而在windows下则只提供编译后的文件最新版本是php4.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前的注释标记去掉任课教师:陆铭网站:/10Windows下安装和配置PHP环境(2)使用IIS服务器安装PHP修改完php,ini文件后,鼠标右击php_iis_reg.inf文件,在弹出的菜单中选择“安装”将PHP安装到系统中安装完毕后必须重新启动计算机,安装过程中修改的参数才能有效重新启动后即可使用安装和使用过程中有不清楚的地方,可以随时打开求助文件了解操作要点在Windows下构建Apache平台运行PHP除了可以在IIS中安装PHP外,还可以在windows环境下构建Apache平台首先到Apache网站上下载Apache在Windows下的应用程序下载后解压缩安装,安装完成后需要对Apache做一些特别的设置在http.conf或srm.conf中增加一行信息:Apacheapplication/x–httpd-php"php/php.exe"Apacheapplicaion/x–httpd–php..php任课教师:陆铭网站:/11Linux下安装和配置PHP环境在Linux下,程序以源码形式发布,需从源码开始编译并安装,相比Windows下稍微复杂些首先从php官方网站上下载php源码,如:php-4.3.0.tar.gz这是一个压缩文件,.gz表示是经过gzip压缩的文件,.tar表示这是一个包文件。Linux文件压缩时有个习惯:先将文件打包,然后再压缩将压缩文件用gunzip和tar进行解压缩和解包gunzipphp-4.3.0.tar.gztarxvfphp-4.3.0.tar解压后的Linux源码中往往有一个脚本程序,可以直接使用该脚本程序configure进行编译,但这样编译出来的文件安全性差一般使用配置项进行指定以获得最适合的程序运行./configure–help|more可以查看相关的选项编译时可选择编译成外部CGI程序还是Apache内嵌模块建议最好将对MySQL的支持部分编译进去任课教师:陆铭网站:/12几个常用的Unix命令gunzip对后缀为.gz的压缩文件进行解压缩操作tar对后缀为.tar的打包文件进行解包操作cd设置当前文件目录路径make对源码文件进行编译操作makeinstall经编译后的结果安装到当前目录下maketest测试安装结果命令makebench评估安装结果和性能cp文件复制操作命令./表示当前目录../表示当前目录的父目录任课教师:陆铭网站:/13配置php环境PHP环境的配置主要是通过php.ini文件进行的PHP环境配置的信息对整个PHP环境都有效,如果要改变相关的环境因素,只要修改环境配置文件php.ini即可环境配置文件的读取以内置服务器模块方式运行的PHP,在启动服务器时读取以CGI方式运行的PHP,每次调用时都发生调用对于Apache+PHP的配置信息Apache的配置文件为:httpd.conf或srm.confPHP的配置文件为:php.ini依据环境参数位置的不同,修改httpd.con(srm.conf)或php.ini任课教师:陆铭网站:/147.3PHP语言基础任课教师:陆铭网站:/157.3.1PHP语言中的简单约定PHP代码在html中嵌入形式
这两种是php语言的标准形式使用php代码在客户端的浏览器进行页面输出时,页面的源代码中只有一些标准的HTML代码php引擎在服务器端过滤了文件的内容,对其中的代码进行了处理,转换成了标准的HTML代码,并发送到客户端的浏览器①<?php┊?>②<?┊?>③<scriptlanguage=“php”>┊</script>④<%┊%>使用这两种形式时需避免与XML或ASP语言发生冲突任课教师:陆铭网站:/16PHP语句的脱离形式与程序注释PHP语句的结束(脱离)形式与C语言相同,PHP程序语句是以“;”为结束标志的在嵌入符号“?>”之前的一句php语句可以不写“;”就结束程序注释可以使用C、C++、UnixShell语言的注释方式//或#----单行式,如://Oneline.、#Oneline./*┅*/----多行式,多行式的注释不能相互包含示例//┅/*┅*/┅√/*┅/*┅*/×┅*//*┅//┅√┅*/任课教师:陆铭网站:/177.3.2变量的声明和文件的引用变量声明PHP是一种弱类型声明语言,与VBScript、Javascript相似,变量声明时不需要特别说明变量的类型,而且往往在变量声明的同时进行变量初值的赋值PHP变量声明格式:$变量名=表达式或值;$title=“Hello,world!”;头文件的引用所谓头文件是指这样的一类文件,其中包含了大量的常量、通用函数和通用过程,它的内容可以为各个程序文件所引用引用头文件可以加快程序开发的速度,减少程序开发难度在php程序中可以像C语言一样,对头文件进行引用引用格式Require(“文件名”);静态引用.Include(“文件名”);动态引用.不论是否真的需要使用,引用的文件都将作为主程序的一部分来运行。出错时,给出错误信息并终止程序的运行。仅在确定需要使用其中的常量或函数时,文件才会被加入到主程序中。出错时,仅给出错误信息,程序照常运行。任课教师:陆铭网站:/18复合语句,=为赋值语句,while为当型循环数据库操作函数数据库选择函数7.3.3数据库操作命令先看一个简单例子
<?php$db=MYSQL_Connect("localhost","user","passwd");MySQL_Select_db("mydb",$db);$result=MySQL_query("select*fromemployees",$db);echo"<tableborder=1>\n";echo"<tr><th>姓名</th><th>职位</th></tr>\n";while($myrow=MySQL_fetch_row($result)){printf("<tr><td>%s</td><td>%s%</td><td>%s</td></tr>",$myrow[1],$myrow[2],$myrow[3]);}echo"</table>\n"?>变量,数据库链接号主机名用户名口令归纳:数据库操作的基本步骤⑴链接数据库服务器:MySQL_Connect("localhost","user","passwd");⑵选择一个数据库:MySQL_Select_db("mydb",$db);⑶对数据库进行具体的操作:MySQL_query("select*fromemployees",$db);⑷处理记录:MySQL_fetch_row($result)假设:已经在MySQL中创建了一个名为mydb的的数据库,其中含有一个数据表employee,具有“姓名”、“职位”等字段注意:php中对变量、标识符等区分大小写数据库链接函数任课教师:陆铭网站:/197.3.4一个完整而简单的PHP程序Sample.php<html><head><title>php程序示例</title></head><body><?php$hello="这是我编写的第一个PHP程序";
print$hello;print"<h1>$hello</h1>";?><h2><?phpprint$hello;?></h2></body></html>说明:php是服务器端的嵌入式脚本描述语言,php程序必须放置在服务器端,在服务器上供客户端的浏览器执行,即类似ASP程序,不可在客户端直接浏览。任课教师:陆铭网站:/207.3.5PHP的数据类型、运算符和表达式任课教师:陆铭网站:/21PHP的数据类型PHP支持多种数据类型Integer整型、Double浮点型、String字符串Array数组、Object对象、pdfinfo和pdfdocPDF信息PHP不是强类型说明语言,在程序中可以不必事先进行数据类型的声明,PHP解释器会自动对数据类型进行判断在第一次赋值时,PHP根据上下文决定变量的数据类型任课教师:陆铭网站:/22PHP中的常量PHP中对常量的类型要求是不严格的常量分为预定义常量和自定义常量两种预定义常量:PHP内部事先已经定义了的常量预定义常量有多种不同的开头,决定了各种不同的类别
P.149自定义常量:由用户自行依据程序的需要来定义的常量自定义常量的定义格式:define(“常量名”,表达式或值)例:define(“CONSTANT”,“Hello,World.”)示例<?phpfunctionreport_error($file,$line,$message){echo"Anerroroccurredin$fileonline$line:$message."}report_error(_FILE_,_LINE_,"somethingwentwrong!");?><?phpdefine("CONSTANT","HelloWorld.");echoCONTANT;undefine("CONTANT");?>任课教师:陆铭网站:/23再谈PHP中的变量变量的概念变量是通过一个标识、类型来应用内存,通过标识、类型和可选的数值来定义变量每一个变量都有一个作用的范围,定义了变量的可见性和生命周期变量的定义$变量名=初始值变量的类型详见P.149,通常情况下不需要声明类型,但可使用cast或settype进行强制类型转换变量的初始化一般只要直接赋值即可,如:$int1=1998,$ln="anewline.\n",$st="php"数组初始化:$数组名=array(,,,…),如:$name=("张三","李四")数组变量的引用:$数组名[i],i=0,1,2,…,如:$name[0],$name[1]i称为数组的下标,下标的取值从0开始<html><head><title>变量定义</title></head><body><?php$name="大山";$account="486595237";$Balance=16893.85;echo"<h2>$name,你好!</h2><p>";echo"<h3>你的账号是:$account。</h3><p>";echo"<h2>你现在账上的余额是:$balance。</h2><p>";?></body></html>任课教师:陆铭网站:/24变量的作用域一般情况下,PHP变量仅仅只有有限的活动范围在用户自定义的函数中有“本地函数范围”的概念所谓“本地函数范围”是指所有函数中的变量不经特别声明,都仅仅在函数内有效,函数外定义的变量在函数内无效一般情况下,变量均为局部的(本地),除非用以下两种方法之一指定其全局属性使用global关键字作再定义使用$GLOBALS数组,该数组可以不用声明,可以直接使用<html><head><title>变量作用域</title></head><body><?php$a="大山";functiontest(){echo$a;};test();?></body></html>
∵$a没有在函数内说明,∴没有任何结果输出<html><head><title>变量作用域</title></head><body><?php$a=3.008;$b=9558880.992;functiontest(){global$a,$b;$b=$a+$b;};test();echo$a,$b;?></body></html>
输出结果为:3.008,9558884.000<html><head><title>变量作用域</title></head><body><?php$a=3.008;$b=9558880.992;functionsum(){$GLOBALS["b"]=$GLOBALS["a"]+$GLOBALS["b"];};sum();echo$a,$b;?></body></html>
输出结果同样为:3.008,9558884.000任课教师:陆铭网站:/25静态变量静态变量仅仅在本地函数的活动范围中存在通常情况下,变量的生命周期仅在一次调用中在用户自定义函数中的变量,调用结束,变量就释放了即函数调用结束,变量消亡;下次调用,重新设置变量静态变量能够使变量在函数调用结束后仍保持不变要想使变量能够保持一段时间,须使用静态变量<?phpfunctiontest(){$a=0;echo$a;$a++;};test();?><?phpfunctiontest(){static$a=0;echo$a;$a++;};test();?>因为变量$a的初始值为0,所以函数调用后输出结果为0,然后变量$a增1,$a++,此时变量$a的值为1,但函数运行结束,变量全部释放,变量$a不再存在变量$a的初始值仍为0,第一次函数调用后的输出结果为0,然后变量$a增1,$a++,此时变量$a的值为1,因为变量$a是静态变量,函数运行结束后,变量不会释放,变量$a仍然存在;第二次调用该函数时,不再做新的初始化操作,直接取出该变量的值使用。结果是每次输出的值比上次的大1。任课教师:陆铭网站:/26递归函数和递归调用递归是程序设计中常用的一种程序设计方法递归的含义就是用自己的定义来说明自己递归函数就是具有函数自身调用功能的函数这种调用就称为递归调用递归函数中使用静态变量能够使值发生传递,是一种很重要的应用方法为了避免死循环,在设计递归函数的时候,必须有一个明确的且必定会发生的条件来终止函数的递归调用<?phpfunctiontest(){static$count=0;$count++;echo$count;if($count<10){test();}$count--};?>函数第一次调用:$count=0,$count+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活动变量活动变量类似于C语言中的指针所谓活动变量,是指动态地设置和使用一个变量的名称示例一个普通变量的声明:$a=“hello”$a为普通变量,值为hello一个活动变量的声明:$$a=“world”活动变量将$a的值作为变量名,并赋值worldecho“$a$$a”;echo“$a$hello”;活动变量的好处是可以动态地引用/设置一个变量的名字数组中使用活动变量$$a[i]可表示为$a[i]作为变量名,下标变量$a的第i个变量,${$a[i]}可表示为$$a作为变量名,a变量值为变量名组成的数组的第i个分量${$a}[i]任课教师:陆铭网站:/28外部PHP变量(1)由客户端提供的信息,在PHP中被视作外部的变量得到响应HTML表单当表单被提交后,PHP脚本将自动设置从表单获得的变量为可用变量在php_track_var特性打开的情况下,可使用全局联合数组:$HTTP_POST_VARS、$HTTP_GET_VARS图象提交变量名字当提交表单的按钮视一个图象按钮时,表单程序会使用两个附加的变量_x和_y来记录用户点击在该图片上的位置信息。<inputtype=imagesrc=“image.gif”name=“sub”>(sub_x,sub_y)HTTPcookies可使用setcookie()函数对cookie进行设置任何从服务器发送到客户端的cookies将自动转化为一个PHP变量如果希望对单个的cookie指派多个值,只要使用cookies数组即在cookie的名字后加[]Setcookie("MyCookie[]","Testing",time()+3500)<Formaction="sample.php"method="post">
姓名:<inputtype="text"name="name"><br><inputtype="submit"></form>表单提交后,PHP将自动建立一个$name变量,包含了由文本框输入的全部文本<Formaction="array.html"method="post">
姓名:<inputtype="text"name="personal[name]"><br>Emai:<inputtype="text"name="personal[email]"><br>
喜欢的啤酒:<br><selectmultiplename="beer[]"><optionvalue="warthog">Warthog<optionvalue="guinnes">Guinnes</select><inputtype="submit"></form>本表单被提交后,在PHP中将自动生成$personal[name]、$personal[email]、$beer[]变量
任课教师:陆铭网站:/29外部PHP变量(2)环境变量PHP自动使用环境变量作为普通变量:echo$HOMEPHP可使用内置函数读取外界的环境变量信息:getenv();PHP可使用内置函数设置外界的环境变量值:putenv();任课教师:陆铭网站:/30数据类型的自动转换PHP不需要在声明变量时确定它的变量类型,一个变量的类型是由这个变量被使用的前后关系来决定的PHP自动转换类型的典型例子是运算符“+”$var=“0”$var为字符串变量“0”$var++$var仍为字符串变量“1”$var+=1$var转换为一个整数2$var=$var+1.3$var成了一个双精度数3.3$var=10+“5littles”$var保存的将是数值15当字符串转换成整数时,若字符串的开始为数字串,则取该数值为字串的值,否则取0值任课教师:陆铭网站:/31类型转换规则确定一个变量的类型因为PHP自己决定变量的类型,并且常常按需要转换变量的类型,所以一个变量的类型往往不是在任何时刻都很明确的PHP有一些函数可以找出一个变量的确切类型gettype()、is_long()、is_array()、is_string()、is_object()类型转换PHP中变量除了可自行转换外,还可以被要求强制转换。强制转换时,将需要的类型名写在变量前的括号内即可$var=10;$bar=(double)$var;字符串转换当一个字符串被当作数值来计算时,它的结果和类型如此确定字符串中含有“·”、“e”或“E”,则被当作双精度类处理,否则作整数处理字符串以任何有效的数字开头,则这个数字就是字串参加运算的值,否则为0初始化对象初始化一个对象用new语句classfoo{functiondo_foo(){echo"Nowdoingfoo.";}}$bar=newfoo;$bar->do.foo();上述程序中,class{}部分为对象的说明部分,$bar=newfoo;为对象初试化操作$bar->do.foo();为对象中的函数调用任课教师:陆铭网站:/32PHP的数组处理数组初始化使用连续的指定值进行数组的初始化,连续指定时不需指明标号例:$name[]="张为";$name[]="李文";$name[]="赵悦";下标为0~2数组的最小下标是0,不是1数组的操作PHP同时支持标量数组(ScalarArray)和关联数组(AssociativeArray),实际使用中不会感到两者之间的任何区别通过使用函数创建数组:list()或array()通过赋值创建数组:$a[0]="abc";$a[1]="Smith"通过函数处理数组:asort(),arsort(),ksort(),rsort(),sort(),unsort(),usort()等函数可用于排序,count()用于统计数组中的元素个数,next(),prev(),each()等函数可用于遍历数组任课教师:陆铭网站:/33基本运算符算术运算符+、-、*、/、()、mod()等字符运算符·连接符$a=“Hello”;$b=“World”;$c=$a·$b赋值运算符=、+=、·=、-=、*=、/=等,除=外其他运算符称为复合运算符位运算符按位进行运算的符号:&、|、~参见p.157逻辑运算符and、or、xor、&&、||、!任课教师:陆铭网站:/34其他运算符比较运算符==、!=、<、<=、>、>=特殊运算符$&(加在变量前,表示变量的指针)@(加在函数前不显示错误信息)->(引导对象的方法或属性)=>(引导数组的元素值)?:(三元运算符)(expr1)?(expr2):(expr3)类似if…then…else…任课教师:陆铭网站:/357.3.6PHP的基本语句任课教师:陆铭网站:/36表达式表达式的定义:任何内容都有它的值,即表示一个对象的值的语句称为表达式$a=5:变量赋值表达式,$a=5本身的计算结果为5$b=$a:值传递表达式,$b=$a本身的计算结果为$a的值Functionfoo(){return5foo()的返回值是5,foo()也是一个}表达式PHP式一种面向表达式的语言,每一个操作都是一个表达式表达式$a=5的值为5$b=($a=5)等价于$a=5;$b=$a也可以表示为$b=$a=5任课教师:陆铭网站:/37关于前递增与后递增前递增在读出变量的值之前递增变量的值,表示为++$var后递增在读出变量的值之后递增变量的值,表示为$var++组合操作符表达式$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}if(expr1){statements1}elseif(expr2){statement2}else{statements3}if(expr):statements;else:statements;endif单一执行语句形式的if控制语句if($a>$b)print"aisbiggerthenb."多执行语句形式的if控制语句if($a>$b){$t=$a;$a=$b;$b=$t;print"aifbiggerthenb."}嵌套的if语句if($a>$b){print$a;print$b;print“aisbiggerthenb.”}elseif($a==$b){print“aisequalb.”}else{print“aissmallerthenb.”}PHP的if控制语句与HTML语句交互的语法
PHP使用了一种特殊的方法将HTML语言嵌套在if语句中。方法是在if表达式之后跟随一个冒号:,然后嵌入HTML语句,最后用endif结尾<?phpif($a==15):?><H1>A=15now.</H1><?phpEndif;?>对PHP条件控制语句和循环控制语句中的逻辑表达式而言,具体的值无关紧要,只要确定其值为True或False,所以,PHP对于这些表达式的结果只要非零的数值都是True,零是False,0/"0"/空串为False,其他(包括负数)为True;对数组和对象,无任何元素的为False,否则为True。任课教师:陆铭网站:/39循环控制语句while(expr){statements;}while(expr):statements;endwhile;do{statements;}while(expr)breakcontinue当型循环,循环前检测,循环次数≥0。示例:<?php$i=1;while($i<=10){print$i++;}?>当型循环的交互形式,循环次数≥0。示例:<?php$i=1;while($i<=10):print$i;$i++;endwhile;?>当型循环,循环后检测,循环次数≥1。示例:<?php$i=0;do{print++$i;}while($i<=10);?>终止当前循环的执行,并跳出当前循环。当然,break不仅仅适用循环,也可应用在条件分枝上。示例:<?php$i=1;while($i<10){print$i++;if($I==5)break;}?>执行本语句将结束本次循环,跳到循环体的开始处,接着进行下一次的循环判定,也称为“短路循环”。<?phpwhile(list($key,$value)=each($arr)){if($key%2)continue;dosomething_odd($value);}?>任课教师:陆铭网站:/40FOR循环语句For(expr1;expr2;expr3){statements;}这是php中最复杂的循环形式expr1:在循环开始前无条件的被求解执行expr2:每次循环开始时被执行,结果为真则循环继续;结果为假则循环结束expr3:每次循环结束时被执行一般情况下,expr1用来确定循环控制变量的初值,expr2用来确定循环控制变量的终值,expr3用来调整循环控制变量的值任何一个表达式都可以是空的。expr2为空则循环次数不确定For循环也支持交互的“冒号语法”For(expr1;expr2;expr3):statements;……;endfor;使用for循环时,同一个问题可以有多种表示形式,例:要求打印输出数字1~10。第一种方法:<?php
for($k=1;$k<=10;$k++)print$k;?>第二种方法:<?php
for($k=1;;$k++){if($k>10)break;print$k;}?>第三种方法:<?php$k=1;for(;;){if($k>10)break;print$k;$k++;}?>第四种方法:<?php
for($k=1;$k<=10;print$k++);?>任课教师:陆铭网站:/41Switch语句Switch是多路分支语句,虽然可以通过多重嵌套的if语句来实现多路分支,但嵌套越深,程序的可读性越差Switch语句的语法switch(var){caseval1:statements1;caseval2:statwments2;…casevalN:statementsN;default:statements;}几点说明:1)case语句的个数并没有规定,可以无限制增加;2)最后的default是表示在前面所有可能的取值都不满足时的处理方式,但不是必须的,可以没有3)switch语句是依序逐条执行的,直到switch体的结束,或者遇到了break语句,switch语句才停止执行。所以,如果在一个分支语句的后面没有写上break语句,则程序将继续执行下一个分支语句的内容。<?Phpswitch($k){case0:print“kequals0.”;case1:print“kequals1”;case2:print“kequals2”;}?><?Phpswitch($k){case0:print“kequals0.”;break;case1:print“kequals1”;break;case2:print“kequals2”;break;}?><?Phpswitch($k){case0:print“kequals0.”;break;case1:print“kequals1”;break;case2:print“kequals2”;break;default:print“kisnorequalto0,1or2”;}?>任课教师:陆铭网站:/42Require和Include语句require("文件名")头文件包含语句,静态包含,始终以指定的文件来替代include("文件名")头文件包含语句,动态包含,执行到该语句时才会用指定的文件来替代根据以上特定,include语句可以出现在循环控制结构中,以便按需包含不同的头文件;require语句不能出现在循环控制语句中,不能实现按需包含的要求特殊要求include语句出现在if语句中时,必须封闭在一个语法块中$files=array("first.inc","second.inc","third.inc");For($k=0;$k<count($files);$k++){include($files[$k]);}If($cond)if($cond){include($file);include($file);Else}else{include($other);include($other);}
错误的用法正确的用法任课教师:陆铭网站:/43PHP的自定义函数函数定义的一般形式functionfun_name($arg1,$arg2,…$argN){statements;return$ret_val;}函数中可以使用任何有效的PHP代码,甚至是其他的函数或类的定义返回值函数通过return语句返回结果,返回值可以是任何类型的,包括列表、对象。函数不能直接返回多个值,但可以通过返回列表的方式实现。参数外部信息通过参数表传递给函数。Php支持值传递方式(默认方式),也支持地址传递方式。可以定义形式参数为变量参数,也可以直接传变量地址形式参数表函数体。是实现某种功能的语句的有序集合。函数的返回值常量、变量,均为值传递。即传递后不改变传递的信息本身。通过使用变量参数的方式进行地址传递,方法是在引用的变量前加上符号&。即传递后可以直接改变传递的信息本身。<?Phpfunctionfoo(&$bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;?>程序执行后的结果是:
Thisisastring,andsomethingextra.<?Phpfunctionfoo($bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;foo(&$str);echo$str;?>程序执行后的结果是:
Thisisastring,
Thisisastring,andsomethingextra.任课教师:陆铭网站:/44PHP自定义函数(续)默认值函数定义时,可以定义拥有默认值的参数,即给形式参数赋值函数定义时,如需定义拥有默认值的参数,须先定义无默认值的参数,后定义有默认值的参数<?phpfunctionmakecoffee($type="cappucino"){echo"Makingacupof$type.\n"}echomakecoffee();echomakecoffee("espresso");?><?phpfunctionmakeyogurt($type="acidophilus",$flavour){return"Makingabowlof$type$flavour.\n";}echomakeyogurt("raspberry");?>执行的结果是提示出错<?phpfunctionmakeyogurt($flavour,$type="acidophilus"){return"Makingabowlof$type$flavour.\n";}echomakeyogurt("raspberry");?>执行的结果是:Makingabowlofacidophilusraspberry.任课教师:陆铭网站:/45PHP的对象类类是一系列变量和函数的集合,是对象的模型类的定义Class类名称{变量表;函数声明列表;}$this的含义表示当前对象$this->…表示存取当前对象的指定变量或函数示例1ClassCart{var$items;functionadd_item($artnr,$num){$this->items[$atrnr]+=$num;}functionremove_item($artnr,$num){if($this->item[$artnr]>$num){$this->item[$artnr]-=$num;returntrue;}else{returnfalse;}}}示例2ClassData{Var$item;$cname;$cage;functionadd_item($name,$age,$num){$this->item[$num]=$num;$this->cname[$num]=$name;$this->cage[$num]=$age;}functionremove_item($num){$n=count($this->item[]);for($k=$num;$k<$n-2;$k++){$this->cname[$k]=$this->cname[$k++];$this->cage[$k]=$this->cage[$k++];}}}任课教师:陆铭网站:/46类变量的创建和类的扩充自定义类的变量创建$my_cart=newCart;$my_data=newData;添加数据记录或删除数据记录$my_cart->add_item("20",1)$my_cart->remove("20",2)$my_data->add_item("David",42,1);$my_data->remove(3);类构造器类中的构造器是创建类的新变量时自动调用的函数类中与类名相同的函数就是类构造器类构造器可以是带有默认值的P.173ClassAuto_cartextendsCart{functionAuto_cart(){$this->add_item(“10”,1)}}类的扩充扩充的类拥有基类的所有变量和函数,并且拥有在扩充类中新定义的变量和函数扩充类定义时使用extends关键字ClassNew_CartextendsCart{var$owner;functionset_owner($name){$this->owner=$name}}这里定义了一个新类new_cart,是类cart的扩充类,它除了拥有新定义的变量$owner和函数set_owner以外,还继承了父类的所有变量$items和函数add_item,remove_item。($tem:"10",$num=1)($item,$num)带参数的类的变量的创建:$new_cart1=newAuto_cart();$new_cart2=newAuto_cart("20",16);任课教师:陆铭网站:/477.4PHP访问MySQL数据库任课教师:陆铭网站:/48MySQL数据库的历史SQL-StructuredQueryLanguageMySQL之前,在互联网上广泛使用的是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字节的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的最大优势在于数据库检索的速度。任课教师:陆铭网站:/49MySQL与其他数据库的比较Oracle大型数据库,稳定、安全在数据库检索上采用了复杂算法,不适合小型简单应用场合Access小型数据库系统,适合于使用微软平台、访问量较小的场合SQLServer适合于使用微软平台、质量要求一般的场合主要特点是容易使用,不适合高性能要求的场合MySQL小型、稳定、安全、数据库性能较高任课教师:陆铭网站:/50MySQL数据库的安装MySQL安装包的获取从网站上下载MySQL安装包可下载windows平台的MySQL安装包,也可以下载Unix下的Windows环境下安装MySQL将获得的安装包解压缩,然后运行安装程序除了MySQL安装包外,还要从网站上下载MyODBC的驱动程序,以便可通过其他应用程序与MySQL相连在win9x下安装MySQL安装TCP/IP协议:MySQL是使用TCP/IP协议连接客户端和服务器的安装MySQL(若安装目录不是缺省目录,可先安装在缺省目录中,然后再移动到指定目录的办法,移动后须使用“MySQL–basedir新目录名”启动)选择MySQLd或MySQLd–opt运行方式启动MySQL服务:在命令窗口内运行“MySQLd”终止MySQL运行:在命令窗口内执行“MySQLadmin–urootshutdown”使用调试和自动内存管理的方式编译使用对Pentium优化的版本在中国地区有两个镜像站点可供快速下载:、M任课教师:陆铭网站:/51MySQL数据库的安装(续1)在WinNT平台下安装MySQL安装过程与win9x下基本相同,所不同的是,必须在NT上安装servicepack3或以上版本,且最好把MySQL安装成为服务器安装命令:MySQLd–nt–install启动MySQL服务命令:NetStartMySQL关闭MySQL服务命令:NetStopMySQL在Linux平台下安装MySQL两种安装模式RPM(二进制代码形式):安装最为方便,但不可定制,可能未必运行在最高性能上Src(源代码形式):可以定制安装,可使用更多的个性化选项,但安装起来较为麻烦任课教师:陆铭网站:/52MySQL数据库的安装(续2)RPM包方式安装Linux环境下的MySQL确认已经安装了RPM软件确认是以root身份登陆系统的将MySQL安装包复制到Linux的机器上,或者是Linux可以访问的驱动器上确认将要安装的MySQL包含了两个RPM包:Theserverfori385systems和Clienprogramsfori386systems在安装目录下运行以下命令rpm–ivhMySQL–3.xx.xx.i386.rpmrpm–ivhMySQL–client–3.xx.xx.i386.rpm在根目录下运行setup启动MySQL,并且可以在随后出现的对话框中选择“SystemServices”,再选择MySQL的启动方式(自动启动/手动启动)终止MySQL的数据库服务/etc/rc.d/init.d/MySQLstop关闭后的重新启动/etc/rc.d/init.d/MySQLstart链接测试使用MySQL–urootMySQL命令进行测试,如果能显示MySQL的版本信息,并最终出现MySQL>,表示安装成功。可以用exit命令返回到系统提示符下。任课教师:陆铭网站:/53链接测试安装完成后通过链接测试来检验是否完成正确地安装了整个数据库,可以使用任何MySQL命令进行监测常用MySQL–urootMySQL命令直接对MySQL进行访问,如果正常,则会返回如下消息ReadingtableinformationforcompletionoftableandcolumnnamesYoucanturnoffthisfeaturetogetaqickerstartupwith–AwelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis21toserverversion:3.22.27Type"help"forhelpMySQL>安装正确,执行exit命令返回系统提示符任课教师:陆铭网站:/54MySQL中的应用程序MySQL中有大量的应用程序,使用MySQL其实就是使用MySQL中的应用程序MySQL中的程序包括客户端程序、数据库管理程序、数据备份工具等MySQL程序都是基于命令行的,含有大量的参数支持其强大的功能为了便于用户对参数应用的了解,每个程序都带有一个特别的参数:help,使用这个参数可以查看本程序允许使用的参数、参数的作用、用法等使用简介任课教师:陆铭网站:/55MySQL数据库服务的启动与终止开机、关机时的自动启动与终止使用脚本程序MySQL_server在系统运行期间的数据库重启操作关闭数据库:MySQL–uroot–pxxxxshutdown开启数据库:safe_MySQLd&如果是用rpm包安装的MySQL,可以用以下命令/etc/rc.d/init.d/MySQLstart/etc/rc.d/init.d/MySQLstop/etc/rc.d/init.d/MySQLrestart用户名与用户相关的口令指定在后台运行数据库服务任课教师:陆铭网站:/56MySQL的基本使用用户账号MySQL是MySQL自带的一个标准数据库客户端程序,可用来与MySQL的服务器进行通讯使用MySQL与数据库连接通常需要有用户账号和口令启动MySQL程序的命令Shell>MySQL–h
主机名–u
用户名–p
口令MySQL>MySQL>quit/e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国热印计米印字机市场调查研究报告
- 2025年中国液动气体升压器市场调查研究报告
- 2025年中国汽车衡专用仪表市场调查研究报告
- 2025年中国手摇式温湿度仪市场调查研究报告
- 2025-2026学年人教版一年级语文下册全册知识点总结(完整版)
- T∕CBIA 004-2018 中国饮料行业节水、节能优.秀企业考核评价通则
- T∕CIN 109-2026 船用集装箱式移动电源电气接口技术要求
- 2025年工业副产石膏资源化利用政策与实践
- 花果园购房合同模板(2篇)
- 2026年招商银行(重庆分行)人员招聘考试参考题库及答案详解
- 血液净化中心质量控制分析报告
- 2026内蒙古阿拉善盟事业单位招聘工作人员暨“智汇驼乡·鸿雁归巢”143人考试备考试题及答案解析
- 国家锅炉压力容器压力管道安全管理A证考试题库(含答案)
- 2026届河南省郑州市外国语中学中考数学适应性模拟试题含解析
- 慢性肾病诊疗指南(2026年版)基层规范化诊疗
- 广东省深圳市宝安区2024-2025学年八年级下学期期末语文试题及答案
- 2026年单位驾驶员测试题及答案
- 深度解析(2026)《SYT 7784-2024 陆上油气田采出水地下注入环境保护技术规范》
- 景德镇景德镇市公安机关2025年招聘65名警务辅助人员笔试历年参考题库附带答案详解
- 巡察工作方法技巧培训课件
- 2026秋招:铜陵有色金属集团面试题及答案
评论
0/150
提交评论