PHP_MySQL教程-第三天 基本函数

前端之家收集整理的这篇文章主要介绍了PHP_MySQL教程-第三天 基本函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

第一页基本函数
欢迎来到本教程的第三课,也是最后一课。如果您已经学过第一课和第二课,那么您已经掌握了MysqLPHP的安装及编程的基本知识。下面我们要介绍PHP的一些其他函数,这些函数可能会对您有用,使您的开发过程更加简单。首先我们来看看头文件
大家应该知道头文件的一些基本概念吧?头文件是一个外部文件,它的内容被包含到主程序中。方法也十分简单:在程序文件中引用头文件名,这个头文件就会包含进来了。在PHP中使用头文件,会涉及两个函数:include()和require()。这两个函数差别很小,却很重要,所以我们要认真研究一下。require()函数工作方式与XSSI相类似;不管在程序的哪个部分使用了这个函数,只有程序一开始运行,头文件内容就被作为程序本身的一部分来处理。因此,如果您在一个条件判定语句中使用了require()函数,那么即使这个条件即使不为真,头文件也会被包含进来。
而include()函数只是在执行到这一条语句时才会把头文件内容包含进来。如果程序没运行到这里,那PHP是不会管它的。这就意味着,您在条件判定部分使用include时,它会完全按照您希望的那样工作。
还有,如果您用了require()函数,而您指定的头文件并不存在,那么程序将会停止运行并产生错误。如果您用了include(),程序会产生一个警告信息,但是会继续运行。您可以亲自试一下,运行下面的程序,然后把include()换成require(),再比较两个程序运行的结果。
<div class="codetitle"><a style="CURSOR: pointer" data="19257" class="copybut" id="copybut19257" onclick="doCopy('code19257')"> 代码如下:

<div class="codebody" id="code19257">


<?PHP
include("emptyfile.inc");
echo"HelloWorld";
?>



网页制作|网站建设|数据采集.
我喜欢把头文件的后缀名起成.inc,这样就可以把头文件和一般的程序区分开来。如果您也这么做,那么请您修改Web服务器软件的配置文件,使它能够把.inc文件也当作PHP文件来处理。否则,黑客们也许会猜到您的头文件名,然后用浏览器把头文件内容以纯文本格式显示出来。此时如果您的头文件中有些机密信息(如数据库口令等)那就糟糕了。
那么,您用头文件来做什么呢?很简单!把对所有程序都通用的那些内容放到头文件里。象HTML文件头啦,脚注啦,数据库连接代码啦,还有您自己定义的一些函数什么的。把下面的文字拷贝到一个文件中,保存为header.inc。
<div class="codetitle"><a style="CURSOR: pointer" data="10971" class="copybut" id="copybut10971" onclick="doCopy('code10971')"> 代码如下:
<div class="codebody" id="code10971">
<?PHP
$db=MysqL_connect("localhost","root");
MysqL_select_db("mydb",$db);
?>


<BR><?phpecho$title?> <BR>


<?phpecho$title?>


非常全面的一个PHP技术网站,有相当丰富的文章和源代码.
然后再创建另外一个文件,名字是footer.txt,该文件可以包含一些程序结束时用到的一些文字标记
现在,我们再来创建一个文件,这个文件里面是真正的PHP程序代码。试一下下面的代码,当然,您要确认MysqL数据库服务器正在运行。
<div class="codetitle"><a style="CURSOR: pointer" data="88945" class="copybut" id="copybut88945" onclick="doCopy('code88945')"> 代码如下:
<div class="codebody" id="code88945">
<?PHP
$title="HelloWorld";
include("header.inc");
$result=MysqL_query("SELECT*FROMemployees",$db);
echo"<tableborder=1>n";
echo"<tr><td>名字</td><td>职位</tr>n";
while($myrow=MysqL_fetch_row($result)){
printf("<tr><td>%s%s</td><td>%s</tr>n",$myrow[1],$myrow[2],$myrow[3]);
}
echo"</table>n";
include("footer.inc");
?>

看到发生了什么事了吗?头文件里的内容被合并到程序中,PHP把所有的代码都执行了一遍。注意在包含header.inc头文件之前$title是如何定义的。在header.inc中的代码可以访问到它的值。这样,网页的标题就被改掉了。现在,您可以在任何程序中使用header.inc头文件了,您所要做的不过是在每个主程序中为$title变量取一个合适的值。
文件、HTML、条件判定语句,还有循环语句,这些东西加在一些,您就可以用最简练的代码,写出功能各异的各种复杂程序来。在与函数同时使用时,头文件更能发挥它的效力,我们后面就会看到。
接下去,我们会介绍精彩的部分:数据校验。>> 第二页数据校验
想象一下这样的情形:我们把数据库都设计妥当了,现在请用户输入信息来写到数据库中去。假设您有一个字段是要求数字类型的信息,比如价格;而某个可爱的用户,却在这一栏里输入了文字信息,使得您的应用程序的执行过程出现了故障。对您在sql语句中提供的文字类型的数据,MysqL数据库拒不接受,并向您提出了“严正抗议”。
怎么办呢?您要用数据校验来防止以上状况发生。
简单地讲,数据校验是指我们对数据(通常是用户经由HTML表格传过来的)进行检查,看看它是否遵从一定的规则。规则可以是多种多样的,比如某一数据元素不能为空,或者要求某一数据项的内容必须满足一定的要求(例如前面的例子中要求必须是数字而不是文字,或者要求电子邮件地址中一定要包含一个“@”字等等)。
数据校验既可以在服务器一端作,也可以在客户端来作。PHP是用来作服务器一端的数据校验的,而JavaScript或其他客户端脚本编程语言则能够提供客户端的数据校验功能。本文说的是PHP,所以我们在这里着重介绍服务器端的校验。如果您想找一些现成的、在客户端运行的数据较验程序,那您可以去网猴程序库看看。
暂时把数据库放在一边不谈,我们先来说说PHP的数据校验方法。如果您愿意(或者说,您想记录我们要校验的那些数据的话),您可以在前面所建的员工数据库的里加入其他字段,很简单,用MysqL的ALTER语句就行了。
有好几个PHP功能都可以用来作数据校验的工作,有些很简单,有些则复杂一些。其中strlen()是比较简单的一个函数,它能够告诉我们一个变量的长度。
更复杂一点儿的是ereg(),这个函数可以处理完整的常规表达式来进行复杂的校验。我不想就常规表达式讲得太深,因为许多书都是专门写这个问题的。不过我会在下一页中给出一些简单的例子。
我们先从一个简单的例子开始吧。下面这个程序要检查一个变量是否存在。
<div class="codetitle"><a style="CURSOR: pointer" data="28466" class="copybut" id="copybut28466" onclick="doCopy('code28466')"> 代码如下:
<div class="codebody" id="code28466">


<?PHP
if($submit){
if(!$first||!$last){
$error="对不起,您必须填写所有的栏目!";
}else{
//处理表格输入内容
echo"谢谢!";
}
}
if(!$submit||$error){
echo$error;
?>


<formmethod="post"action="<?phpecho$PHP_SELF?>">
第一栏:<inputtype="text"name="名"value="<?phpecho$first?>">
第二栏:<inputtype="text"name="姓"value="<?phpecho$last?>">
<inputtype="Submit"name="submit"value="输入信息">

<?PHP
}//if结束
?>


这段程序中关键的地方是嵌套的条件判定语句。第一层检查用户是否按了发送数据的按钮。如果是,程序接着检查$first和$last两个变量是否都存在。那个||符号表示“或”,而!符号表示“非”。那一句程序用一般语言描述就是“如果$first不存在或者$last不存在,那么就把$error变量置成下面的值。”
接下来,我们再进一步,检查一段文字的长度。这对用户口令的检查是很有必要的,因为您不想让某些懒惰的用户输入只有一、两个字的口令,可能会要求他们输入六位长的口令。
我们已经讲到strlen()这个函数了。它只是简单地返回一个数字,该数字等于被测变量中所包含的字符个数。这里,我修改一下上面的程序,检查一下$first与$last的长度。
<div class="codetitle"><a style="CURSOR: pointer" data="47293" class="copybut" id="copybut47293" onclick="doCopy('code47293')"> 代码如下:<div class="codebody" id="code47293">


<?PHP
if($submit){
if(strlen($first)<6||strlen($last)<6){
$error="对不起,您必须填写所有栏目!";
}else{
//处理表格输入内容
echo"谢谢!";
}
}
if(!$submit||$error){
echo$error;
?>


<formmethod="post"action="<?phpecho$PHP_SELF?>">
第一栏:<inputtype="text"name="名"value="<?phpecho$first?>">
第二栏:<inputtype="text"name="姓"value="<?phpecho$last?>">
<inputtype="Submit"name="submit"value="输入信息">

<?PHP
}//if结束
?>



您可以执行一下这段程序,输入六个字或少于六个字的内容。这种校验很简单,但很有效。>> 第三页处理常规表达式
我们稍微讲讲用ereg()和eregi()两个函数处理常规表达式。前面我已经提过,这些函数有的很简单,有的很复杂,看您的实际需要而定。
使用常规表达式,您可以对一个字符串进行检查,搜索其中的一些结构模式,判定这些模式是否满足您的规定。最普遍的用法包括检查电子邮件地址是否有效(当然,即使这种办法判定有效,也不能保证邮件地址真的存在)。
我们在这里不细究常规表达式的复杂细节了,仅仅给出几个实例。您可以使用上一页中用过的表格-把相应的程序代码复制过来,添加到下面的代码段中,就可以看到它是怎样工作的。
首先,我们要确保表格中各栏只能输入字母。下面的常规表达式在用户输入一个或多个小写字母时判定为真,而输入数字是不允许的:
if(!ereg("[a-Z]",$first)||!ereg("[a-Z]",$last)){
现在我们更进一步,检查字符串的长度是否是四到六位字符长。用[[:alpha:]]是检查字符是不是字母的简单方式。大括号内的数字检查字符个数。还要说明的是,^和$分别代表字符串的开始和结束。
if(!ereg("^[[:alpha:]]{4,6}$",$first)||!ereg("^[[:alpha:]]{4,$last)){
最后,我们来构造一个常规表达式,来检验电子邮件地址的有效性。这种检验方式的效果已经引发了相当多的讨论。没有什么东西是十全十美的,不过我下面给出的这段程序还是十分奏效的。
我这段宝贝程序是从PHP邮件讨论组上得来的。那可是个好去处-常去看看吧。不错,这段程序看起来是有点乱糟糟的。
if(!ereg('^[-!#$%&'+./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&'
+/0-9=?A-Z^`a-z{|}~]+.'.
'[-!#$%&'*+./0-9=?A-Z^
`a-z{|}~]+$',$last)){
别花太多时间来细究这段代码了,还是先到下一页内容吧。>> 第四页简便方法
前面的常规表达式怎么样?很有意思,是吧?要是在每个需要检查电子邮件地址的程序里都写上这么一段程序,那才真叫有意思呢?!想想看吧,得写那么乱七八糟的一段程序,还得写上那么多遍!...不过,当然了,还有更简便的方法
还记得前面我们学过的头文件吗?它能让我们写一段程序,象是这个电子邮件地址的检查程序,然后把这段程序包含进多个程序里面去。这样,我们要改写这段程序时,只须改动一处就行了,不用修改多个文件
但是,要做到这一点,我们必须用到函数
我们已经用过很多次函数了。每次我们查询数据库或检查字符串长度时,我们都是用函数来做的。这些函数PHP自带的。如果您是位热心的程序员,您可以用自己编写的函数来扩充PHP本身的功能。但对本教程而言,这部分内容是太过高深了一点。我们要创建的函数不是那一种,而是写在PHP脚本程序内部的函数
函数就是一段程序代码,我们可以把一个或多个值传给这段代码,然后这段代码会处理我们传给它的数据并返回一个值。根据实际需要,函数可以很简单,也可以十分复杂。但是只要我们传进去一个数,然后能得到一个数,您管它里面有是复杂还是简单呢!这就是函数的可爱之处。
PHP里的函数与C语言里的函数表现差不多。当我们定义函数时,必须指明函数需要接收什么样的数据。一开始好象不太好理解为什么它要接收数据进去,不过这样可以防止发生一些怪异的问题。函数之所以能做到这一点,是因为函数里面的变量都是私有变量,也就是说,它只在该函数内部存在。例如,您在程序中有一个变量叫$myname,如果您创建了一个函数,想让这个函数也使用那个$myname变量(值也相同),那是不行的。您可以在函数内部创建一个变量,名字也叫$myname,这两个变量可以各平相处,而各自取不同的值。不过我可不建议您这么做!您如果真的这么做了,等半年后您再来修改这样的程序时,您可能就会被弄糊涂了。
那我们现在就来创建一个函数,先来个简单的。我们要给它取个名字,指定它要接收什么的变量。在调用这个函数之前,我们还得定义这个函数
<div class="codetitle"><a style="CURSOR: pointer" data="29540" class="copybut" id="copybut29540" onclick="doCopy('code29540')"> 代码如下:<div class="codebody" id="code29540">


<?PHP
functionaddnum($first,$second){
$newnum=$first+$second;
return$newnum;
}
echoaddnum(4,5);
?>



这就行了!首先,我们创建了第一个自己的函数。我们定义了两个新变量,$first和$second,注意它们是怎样被定义的。在调用这个函数时,要给这两个变量按它们出现的顺序赋好值-4赋给$first,5赋给$second。然后我们简单地把这两个数加在一起,返回结果。“返回”在这里的意思是把结果送回去。在程序最后部分我们把数字9显示出来。
我们再来创建一个函数,让它对我们的数据库应用有点帮助。一个能妥善处理错误函数怎么样?试试下面的程序:
<div class="codetitle"><a style="CURSOR: pointer" data="56243" class="copybut" id="copybut56243" onclick="doCopy('code56243')"> 代码如下:<div class="codebody" id="code56243">


<?PHP
functiondo_error($error){
echo"噢,好象有点儿问题...
";
echo"系统报告的错误是:$error.n
";
echo"最好是暂时关闭网站并通知系统管理员。";
die;
}
if(!$db=@MysqL_connect("localhost","user","password")){
$db_error="无法连接到MysqL数据库";
do_error($db_error);
}
?>



在运行程序之前,试试关闭MysqL数据库,或使用错误用户名或口令。您会看到友好的、有用的错误信息。细心的朋友会注意到在MysqL_connect()函数之前的那个@符号。它会抑制系统错误信息,使得程序只能从do_error()函数那里得到有关的错误信息。您还会注意到,我们可以把一个在别处定义的变量作为参数传给函数,而不是在调用时直接赋一个值。
还记得我过函数使用的是私有变量吧?这话说得不完全对。事实上,您可以让函数访问到函数外面的变量。您可能要写一个函数,用它来查询数据库,然后把结果显示在多个网页中。您不想每次都把数据库连接标识都传给函数。在这种情况下,您可以把连接标识定义成一个全局的变量。例如:
<div class="codetitle"><a style="CURSOR: pointer" data="76133" class="copybut" id="copybut76133" onclick="doCopy('code76133')"> 代码如下:<div class="codebody" id="code76133">


<?PHP
functiondb_query($sql){
global$db;
$result=MysqL_query($sql,$db);
return$result;
}
$sql="SELECT*FROMmytable";
$result=db_query($sql);
?>



这是个很简单的函数,但重要的是,您在调用这个函数时,不必传递$db变量-您可以通过global这个字使得函数可以访问到该变量。在这条语句中您可以定义多个全局变量,各个全局变量之间用逗号隔开。
最后,您可以使用可选参数,这样看起来您已经是真正的专家了。这里面关键的一点是,在函数中定义参数时要给它指定一个缺省值。然后您在调用这个函数时,如果不为该参数变量指定其他值,那么函数自动把缺省值赋给这个变量。如果您指定了其他值,那么缺省值就不起作用了。
不太明白?比方说,您在连接数据库时,几乎总是连接到相同的服务器,并且使用相同的用户名和口令。不过有时候,您也需要连接到其他的服务器。看看下面的程序:
<div class="codetitle"><a style="CURSOR: pointer" data="43021" class="copybut" id="copybut43021" onclick="doCopy('code43021')"> 代码如下:<div class="codebody" id="code43021">


<?PHP
functiondb_connect($host="localhost",$user="username",$pass="graeme"){
$db=MysqL_connect($host,$username,$password);
return$db;
}
$old_db=db_connect();
$new_host="site.com";
$new_db=db_connect($new_host);
?>


很“酷”是不是?在定义函数时,函数内部用到的变量也定义好了。第一次调用这个函数时,全部参数变量都是用的缺省值。第二次调用时,服务器名变了,而用户名和口令没有变。真是太棒了!
想想您在什么地方还能用到函数。您可以用函数来作数据校验,来完成常用的功能,等等。在对Web网页上显示文字作处理时,我用到了很多函数。我可以一次完成对文字的检查、解析和修改,来加入换行符和HTML标记等。
现在,剩下的就是我要给您的一些忠告了。>> 第五页进阶技巧
谈起数据库开发,我们有很多东西要学。如果您还没有学习过怎样进行数据库设计,和怎样在不同的平台上可靠地运行数据库,那么请您赶快去找本这方面的好书来读一读。这方面的能力会带给您无法估量的好处,从长远的眼光看,它会为您节省大量的时间与精力。还有,认真学学MysqL。这是一个复杂而有趣的数据库,有很多不错的文档。学学数据库的表结构、数据类型,还有sql。如果您真正掌握了sql,您可以完成相当多的实际工作。
最后,还有PHP。您想要的一切几乎都可以在PHP的网站上找到,包括全面的文档、邮件讨论组的讨论内容、程序代码库,等等。学习PHP的一个绝好的办法是研究用户手册中给出的实例,并查阅网上的代码。网友们发表的代码包括许多函数和类,您可以在自己的程序中直接使用,而不必自己从头来过。另外,如果您遇到问题,邮件讨论组是一个非常值得利用的资源。PHP的开发人员自己也会参加邮件讨论组,还有许多经验丰富的高手们,他们都可以帮助您解决问题。
祝您编程顺利,一切顺利!

PHP_MySQL教程-第三天基本函数

猜你在找的PHP相关文章