1、2.PHP入门PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。2.1 首要条件你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。2.2 PHP的安装生成一个名为test.php3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。2.3 语法就像前面提到的一样,你可以混合编写你的PHP代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法
2、。你可以选用其中一种你最适应的并且就这样坚持这种方法!从HTML中分离以下是可以使用的方法: . . . 语句与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。注释PHP支持C,C+和Unix风格的注释方式: /* C,C+风格多行注释 */ / C+风格单行注释 # Unix风格单行注释 Hello,World!通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语:First PHP page2.4 数据类型PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解
3、脱!)。但是类型也可以被函数cast或者settype()明确的设定。数值数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值:a = 1234; # 十进制数a = -123; # 负数a = 0123; # 八进制数 (等于十进制数的83)a = 0x12; # 十六进制数(等于十进制数的18)a = 1.234; # 浮点数双精度数a = 1.2e3; # 双精度数的指数形式字符串字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠()可以被用来分割某些特殊字符。举例如下:first = Hello;
4、second = World;full1 = first second; # 产生 Hello Worldfull2 = first second;# 产生 first second可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有详细的例子。数组与哈希表数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。/ 一个包含两个元素的数组a0 = first;a1 = second;a = third; /
5、 添加数组元素的简单方法/ 现在a2被赋值为thirdecho count(a); / 打印出3,因为该是数组有3个元素/ 用一个语句定义一个数组并赋值myphonebook = array (sbabu = 5348,keith = 4829,carole = 4533);/ 噢,忘了教长吧,让我们添加一个元素myphonebookdean = 5397;/ 你定义的carale元素错了,让我们更正它myphonebookcarole = 4522/ 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看echo myphonebook0; / sbabuecho myphonebook1
6、; / 5348其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。对象使用new语句产生一个对象:class foofunction do_foo ()echo Doing foo.;bar = new foo;bar-do_foo(); 改变变量类型在PHP手册中提到:PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数值,那么它就变成了整数。foo = 0; / foo是字符串(ASCII 48)foo+; / foo是字符串1 (A
7、SCII 49)foo += 1; / foo现在是整数(2)foo = foo + 1.3; / foo是一个双精度数(3.3)foo = 5 + 10 Little Piggies; / foo是一个整数(15)foo = 5 + 10 Small Pigs; / foo是一个整数(15)如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。2.5 变量与常量可能你已经注意到,变量都有一个美元符号()的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。g_var = 1
8、; / 全局范围function test()global g_var; / 这样就可以声明全局变量了 更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define(CONSTANT,value)。2.6 运算符PHP具有C,C+和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用=。算术和字符以下只有一种运算符是有关字符的:a + b :加a - b :减a * b :乘a / b :除a % b :取模(余数)a . b :字符串连接逻辑和比较逻辑运算符有:a | b
9、:或a or b :或a & b :与a and b :与a xor b :异或 (当a或b为true时为true,两者一样时为false)! a :非比较运算符有:a = b :相等a != b :不等a b :小于a b :大于a = b :大于等于与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。优先权就和C以及Java一样!2.7 控制流程结构PHP有着与C一样的流程控制。我将在下面大概介绍。if, else, elseif, if(): endifif (表达式一). . .elseif (表达式二). . .else. . ./ 或者像Python一样if (表达式一
10、) :. . . . .elseif (表达式二) :. . .else :. . .endif ;Loops. while, do.while, forwhile (表达式). . .do. . .while (表达式);for (表达式一; 表达式二; 表达式三). . ./或者像Python一样while (expr) :. . .endwhile ;switchswitch是对多重if-elseif-else结构的最好的替换:switch (i)case 0:print i equals 0;case 1:print i equals 1;case 2:print i equals 2
11、; break, continuebreak中断当前的循环控制结构。continue被用来跳出剩下的当前循环并继续执行下一次循环。require, include就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。2.8 函数你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型:function foo (变量名一, 变量名二, . . . , 变量名n)echo Example function.;ret
12、urn retval; 所有PHP代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。2.9 类利用类模型建立类。可以参考PHP手册中对类的详细解释。class Employeevar empno; / 员工人数var empnm; / 员工姓名function add_employee(in_num, in_name)this-empno = in_num;this-empnm = in_name;function show()echo this-empno, this-empnm;return;function changenm(in_name)this-em
13、pnm = in_name;sbabu = new Employee;sbabu-add_employee(10,sbabu);sbabu-changenm(babu);sbabu-show();PHP开发入门教程之面向对象PHP是弱变量的脚本语言,也就是说你无需先定义,这一点很灵活。也可以给予很大的自由度,但对于程序来说,自由并非好事。因为给予后期维护人员阅读带来很大的麻烦。下面来进入我们第一个程序:1.php?class helloWorldvar $hellow_str = Hello World!;function helloWorld()echo $this-hellow_str;$
14、p = new helloWorld;?很明显,这是一个类,很简单的类,只有一个构造函数。目的就是输出Hello World;首先我们定义了一个类成员变量,通过一个特殊的$this对象,输出该变量,oop思想我不是很精,仅仅在于php开发方面用到,其他的也只是借鉴,但是我想对于php开发者已经足够了。接下来,解释下什么是$this对象,从这点我们先要知道什么是类。类,可以解释为一群相同的群体,在类中的成员变量,如上面的$hellow_str可以看作是这个群体的独特的特征,比如,桌子群体是一个类,桌子都有桌面,桌脚,这些“都有”的东西,就是桌子全体的共有特征,在程序类里面我们就可以定义其为 桌子
15、类的一个成员变量。/class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;/ 同样,在桌子世界里,他们也有共同的动作,比如移动也许你现在就在推桌子,也可能我们要把桌子的面子放大点,一样,这个就是桌子群提的共有方法了,和特征近似哦,不过这是动作罢了。让我们把这个共同特征加到类中去吧。/class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;function move()#.function largen()#./知道了上面的,那么接下来就很好理解什么是$this对象了,没有错,他就是桌子群中的一个特定的对象
16、,如果阁下还不能理解,那么,我们接着解释。如果,我们现在要对一张桌子进行整改,比如,我们想把桌子面积做的更大,那么,我们针对的就不是一群桌子,而是这个要整改的特定的桌子,这是个个体!所以,我们要把这个类进行“实例化”进行精确定位。因为,其他桌子我们不需要整改。/class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;function move()#.function largen()$this-desktop+;#放大桌子面$d = new desktop;#“实例化,这个时候我们就是针对一个特定的桌子拉!$d-largen();#哈哈,把这个特定桌
17、子面放大点。其实$d = $this;明白吗,$d就是那个特定的桌子,$d-largen就是用那个特定桌子桌子群大家都有的变大方法把特定桌子面放大了点。/ 原来,$this就是指一个特定桌子呀,哈哈,明白了,原来类是大家都有的属性,方法的集合,而一个特定的对象,就是这个群体中的一个个体,既然是他们当中的个体,当然拥有群体所拥有的共同特征和方法拉。成员变量,成员方法成员函数,实例化,大家都知道了。但是我桌子虽然想变大,可是我还不知道桌子开始有多大啊,这可能吗,怎么办呢?接下来,我们隆重推出 构造函数 来拉。要说到构造函数啊,话多啊,就不多说了,他就是给我们桌子面和桌子腿确定大小的。/class
18、desktopvar $desktop;#桌子面;var $baluster;#桌子腿;function desktop()$this-desktop = 100;$this-baluster = 100;function move()#.function largen()$this-desktop+;#放大桌子面看到了吧,我把桌子定义了大小和长度哦聪明的你,一定想立即实例化了吧,如果我开始在定义成员变量里就给值了,那不是说所有桌子都一样大吗?class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;function desktop()$this-de
19、sktop = 100;$this-baluster = 100;function move()#.function largen()$this-desktop+;#放大桌子面$d = new desktop;$d-desktop();可是结果却是:Call to a member function desktop() on a non-object in倒霉,肯定是作者在骗点击,bs这小样,TT.其实是我错了,我知道错了。原来 我们刚才添加的函数function desktop()$this-desktop = 100;$this-baluster = 100; 是个构造函数,什么是构造函数
20、呢,哎呀,原来构造函数是类特有的函数,在类被实例化后,类会第一步自动执行构造函数,它在为类开辟内存单元嘛。为了验证是不是它一开始就执行,大家请把目光放到本教程第一个代码上去,嘎嘎,您看到了把,一个和类名一样的方法,一个构造函数,在我们实例化后就已经输出代码了吧,这就证明我还没有说错呢。好了,回到我们的桌子世界里,你发现了,我们这个时候所有桌子面和腿都是100了。2.php执行代码?class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;function desktop()$this-desktop = 100;$this-baluster = 100
21、;echo 我们桌子家族命令大家把桌子面子都给我统一在.$this-desktop.大小!br /;function move()#.function largen()$this-desktop+;#放大桌子面echo 7,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有.$this-desktop.嘎嘎;$d = new desktop;$d-largen();? 小桌子,逃离了桌子家族,因为,我们的面子没小桌子这nb大了。桌子老长老看不下去了,小样,看我的。?class desktopvar $desktop;#桌子面;var $baluster;#桌子腿;functio
22、n desktop($desktop)$this-desktop = $desktop;$this-baluster = 100;echo 我们桌子家族命令大家把桌子面子都给我统一在.$this-desktop.大小!br /;function move()#.function largen()$this-desktop+;#放大桌子面echo 7,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有.$this-desktop.嘎嘎;$d = new desktop;$d-largen();? 小桌子,左转转,右转转 看了半天,逛累了,觉得自己现在也进化了,该看看新同类了 于是
23、;桌子变身执行后,发现.$d = new desktop(101);我tmd还是一张小桌子。什么是Apahce一、Apahce简介根据Web服务器调查公司Netcrafe(craft.co.uk/Survey/)调查,全Internet有50%以上的Web服务器都在用Apache。Apache和Ms IIS 同属于Web服务器。二、Apache的安装(指Windows版本)将下载后的文件解压,到一个目录,运行Setup程序,会提示整个安装的过程。比如安装到一个目录(c:apache)下。然后,在该目录的字目录conf下有一个名为httpd.conf的文本文件,用文本编辑器编辑它,将“#Bind
24、Address *”这一行改为“BindAddress 127.0.0.1”。好了,就是如此简单,开始运行Apache吧,接着你在浏览器中输入:http:/127.0.0.1应该就会看到Apache服务器的效果了。需要说明的是,如果你的本机已经在运行一个其它的Web服务器了,你可以通过修改端口来区别开来,你可以在httpd.conf文件的“Port 80”改为“Port 81”或其它没有运行服务的端口。一般来说,FTP端口为21. ,那么,你在浏览器中输入“http:/127.0.0.1:81”就可以了。注意:如果通过上面的步骤,还是不行(出现找不到该页),你可以将httpd.conf文件中一
25、行:#ServerName new.host.name改为:ServerName localhost三、设置Apache虚拟目录 在IIS和PWS中,该设置是通过图形界面进行的,在Apache中,同样是编辑httpd.conf文件(注意:该文件一般不要轻易改动),在该文件中加一行 Alias /test/ c:/php/test/表示将c:/php/test/目录设置为虚拟目录/test/,那么你在c:/php/test/下的文件,就可以通过在浏览器中输入“http:/127.0.0.1/test/文件”访问。四、使Apache支持PHP好了,Apache服务器的简单配置可以了,但是要它支持P
26、HP,还需要做以下工作。在httpd.conf文件中加入以下几行: ScriptAlias /php3/ c:/php3/ AddType application/x-httpd-php3 .php Action application/x-httpd-php3 /php3/php.exe 当然,你如果想将你的php文件后缀改为其它的也可以,将第二行中的最后几个字“.php”改为你想要的后缀,要想支持更多的文件,也可以的,如: ScriptAlias /php3/ c:/php3/ AddType application/x-httpd-php3 .php AddType applicatio
27、n/x-httpd-php3 .php3 AddType application/x-httpd-php3 .phtml Action application/x-httpd-php3 /php3/php.exe 好了,重新启动Apache服务器,让我们来看看有没有成功。在test虚拟目录下编写一个最简单的php文件(hello.php): 在浏览器中(http:/127.0.0.1/test/hello.php)看看有没有成功?好了,我们用看看php的配置吧!五、数据库支持 作为一个留言板最好的方式肯定是操作数据库。所以,我们要选择一个数据库支持,在这里,我不说大家也知道选Mysql,好了,
28、下一节,我将介绍Mysql的基本知识。六、特别提示!以上是PHP3+Apache+Win98的设置你就可以在一个系统下,同时装上php3和php4,比如我目前在我的win2000上的的httpd.conf文件的配置是:ScriptAlias /php4/ e:/php/php4/ScriptAlias /php3/ e:/php/php3/AddType application/x-httpd-php .php4AddType application/x-httpd-php .phpAddType application/x-httpd-php3 .php3AddType applicatio
29、n/x-httpd-php3 .phtmlAction application/x-httpd-php /php4/php.exeAction application/x-httpd-php3 /php3/php.exe 在我的电脑中,php4的文件放在e:/php/php4目录下,php3的文件放在e:/php/php3下, 这样我访问.php4和.php就是php4的文件,而访问.php3和.phtml就是PHP3文件我想,大家看了这些,应该更加明白了.初学入门 PHP 和 MySQL我想要使用PHP和MySQL,但是如何安装和运行呢?什么是最基本的事情我应该知道的,以便让一个简单的PHP
30、 - MySQL应用程序工作? 这是一个基本的教程。没有怪异的代码,只是一些基础。 多说一句,现在有大量的教程是基于UNIX机器的,这个教程将集中在基于Windows平台上。然而,除了安装部分,有或多或少的针对于Windows的说明外,其它部分对所有的平台都是一样的。 在这个教程中,我们将一步一步地建立一个小的网站,使用了PHP和MySQL的下面特性: 1. 查看数据库;2. 编辑数据库的记录;3. 修改数据库的记录;4. 删除数据库的记录。 我们将同时学习MySQL和PHP,一起去感觉它们。 第一节 - 收集和建立必要的项目 好,开始工作。为了开始PHP-MySQL我们需要一些准备: 1.
31、运行web服务器;2. 增加PHP扩展;3. 运行MySQL。 第一步,得到和安装Web服务器 让我们假设一下在你的机器上已经有一个运行着的web服务器。在Windows下有几个好用的web服务器应用程序。要注意一件事,为了运行php/mysql你所选的web服务器应当可以支持扩展。 一个在Windows上最容易安装的服务器是OmniHTTPd(http:/www.omnicron.ab.ca/httpd/,它是一个非常好的自由web服务器。 一旦你从站点上得到了安装文件,双击它并且安装web服务器。如果你在安装时全部选择了使用缺省值,那么你将会把它安装在c:httpd下。一旦安装成功,安装程
32、序将启动web服务器,带有一个欢迎窗口,在windows的系统托盘中可以看到一个新的图标。 好了,第一步做完了。 第二步,下载和安装PHP发行版 得到PHP Win32发行版很容易:只要去 最先Unzip安装文件到你的硬盘上,比如展开在c:php。 拷贝文件php3.ini-dist到你的%WINDOWS目录下去,并改名php3.ini(在Win95/98为c:windows,在WinNT/Win2k为c:winnt)。按下面编辑php3.ini文件:改变extension_dir设置为你的PHP安装目录(c:php),或存放php3_*.dll的目录。 选择想在PHP启动时装入的模块。你应该
33、将extension=php3_*.dll行的注释去掉来装入这些模块(一定要确认去掉了extension=php3_mysql.dll的注释)。一些模块要求有额外的库安装在你的系统上才能正常工作。 PHP问答集( PHP扩展库以php3_为前缀。这个可以防止在PHP扩展与它们的支持库之间发生混淆。 现在跟着简单的步骤配置OmniHTTPd: 在系统托盘中右击蓝色的OmniHTTPd图标,选项属性(Properties)项;点击Web Server Global Settings项; 点中Externaltab标签。现在,在Virtual域中输入.php3,在actual域中输入c:phpphp
34、.exe,然后单击Add。 选择Mime tab标签并且在Vritual中输入wwwserver/stdcgi,在Actual中输入.php3,并单击Add。单击 OK。在同一个窗体中选择Default Virtual Settings;现在单击Server tab标签; 在Default Index域中输入Index.php3(用逗号分隔)。这将告诉web服务器也可以识别index.php3文件。单击 OK。好,足够了。让我们测试一下PHP是否在工作: 创建一个名为index.php3的文本文件,写入下面的文本: 启动你的浏览器,并指到localhost。你应该在屏幕上得到I made it
35、!。下面,得到和安装MySQL: 去 如果你选择了缺省的典型安装,所有的MySQL文件将会安装到c:mysql目录下。现在,跟着以下步骤,每一步都要执行正确。进行一些测试: 首先,你要先运行mysqld-shareware.exe守护程序,它位于c:mysqlbin下。你可以看到一个dos窗口,并在几秒钟后关闭。如果没有显示错误信息,MySQLd就已经运行了。如果想检查一下MySQL,只要运行c:mysqlbinmysql。你将会看到有mysql提示符的终端窗口。很好,我们可以同MySQL服务器进行对话了。 第二部分 - 创建和操纵一个MySQL数据库: 首先我们需要创建要使用的数据库和表。数
36、据库起名为example,表名为tbl,有以下字段:识别号,名,姓和信息。要通过mysql终端完成建库和定义表的工作,只要双击或运行c:mysqlbinmysql.exe。如果要看在MySQL中已经定义了哪些表,可以使用(注意mysql是终端提示符): Mysql show databases; 这个命令可能显示如下信息: +-+| Database |+-+| mysql | test |+-+2 rows in set (0.01 sec) 为了定义一个新的数据库(example),键入:Mysql create database example; 你将会看到一个回答,如: Query O
37、K, 1 row affected (0.17 sec) 很发,我们现在有了一个新数据库了。现在我们可以在库中建立一个新表,但首先我们需要先选中新的数据库: Mysql use example; 回答应该是: Database changed 现在我们可以建表了,有如下字段: 索引号 - 整数用户名 - 最大长度为30的字符串用户姓 - 最大长度为50的字符串自由信息 - 最大长度为100的字符串 在MySQL提示符下键入下面的命令来创建表: MySQL create table tbl (idx integer(3), UserName varchar(30), LastName varch
38、ar(50), FreeText varchar(100); 回答应该是: Query OK, 0 rows affected (0.01 sec) 好,让我们看一下从MySQL提示符下看表是什么样子的,键入命令: MySQL show columns from tbl; 我们将得到下面的结果: +-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| idx | int(3) | YES | | NULL | | UserName | varchar(30) | YES | | NULL | | La
39、stName | varchar(50) | YES | | NULL | | FreeText | varchar(100) | YES | | NULL | |+-+-+-+-+-+-+4 rows in set (0.00 sec) 在这里,我们可以看到刚创建的表tbl的内容。 现在让我们看一下表中有什么内容。键入下面的命令: MySQL select * from tbl; 这个命令是用来显示表tbl中的所有数据的。输出可能是: Empty set (0.07 sec) 之所以得到这个结果,是因为我们还没有在表中插入任何数据。让我们往表中插入一些数据,键入: MySQL insert into tbl values (1,Rafi,Ton,Just a test);Query OK, 1 row affected (0.04 sec) 如上所见,我们插入到表中的值是按照前面我们定义表的顺序,因为使用的是缺省的顺序。我们可以设定数据的顺序,语法如下: MySQL insert into tbl (idx,UserName,LastName,FreeText) values (1,Rafi,Ton,Just a test); 好,现在我们可以再看一下表中的内容: MySQL select * from tbl; 这次的结果是: +-+-+-