首页 > 精品范文库 > 9号文库
四川商会php技能培训中心学习总结(一)
编辑:雪域冰心 识别码:18-1065833 9号文库 发布时间: 2024-07-15 03:15:43 来源:网络

第一篇:四川商会php技能培训中心学习总结(一)

四川商会php技能培训中心学习总结

(一)在四川商会培训php学习到今天也是快一个月时间了,然而到今天为止第一个php写的网站已经快要见亮了,中午后台部分全部功能完成意味着以后做别的站可以拿来就用,不用再费太多精力编写了,现在就简单写写学习php的这一个月我遇到的主要问题。问题1:环境搭配

php最经典的组合当然是LAMP(Linux+Apache+MySQL+PHP)了,不过我没有条件和精力弄Linux所以用Windows 202_代替Linux了,自己调试用,又不是做服务器,所以不要求性能足够用了。

本身我的机器是Win2003+IIS+Framework环境能跑起来ASP和.net,并且装有jdk+tomcat+oracle还能跑起来jsp,本打算不破坏这些环境再安装apache和mysql,不过困难重重啊。

于是放弃jsp环境,并且用ghost备份了asp环境,删掉IIS后重新安装PHP环境,环境还是很好搭的,在百度上轻易的找到教程照着安装就可以Apache+PHP+MySQL+PHPMyAdmin,没有安装Zend,以后深入学习的时候再说吧,没有研究明白多个网站的时候怎么存在不同的路径运行在不同端口,也先不管了,现在80端口跑吧,环境调试好了以后备份了一个ghost,算是php环境成功搭起来了。

问题2:对utf-8编码文件的标记BOM导致的页面空行

这个问题以前在学习xhtml+css的时候遇到过,那时候是因为文档声明类型前面加别的代码了或者没有写文档声明类型xhtml1.0却用w3c的标准做页面导致的,起初我以为也是把require写在文档声明前面出的问题呢,后来反复调试发现不是这么简单,后来上百度搜索了很多关于require引起空行的问题,有一个牛人提到了要在dreamweaver里面ctrl+j把utf-8编码的BOM去掉,当时也不懂BOM是啥,说去掉就去掉吧,确实解决问题了,这算是把这一关过去了,不过后面还有utf-8的问题呢,也是跟这个有关系。

问题3:php下checkbox的取值问题

这是我发现php唯一一个不方便的地方,不像asp那样,所有同名的checkbox的值存成一个集合,php只能取同名里最后一个checkbox的值,在做多数据where in(aa,bb,cc,dd)查询的时候很不方便,只能用js+一个hidden input的方法实现,虽然有点小麻烦,不过不是大问题,很容易就解决了,上网查了一下也确实只有这么才能解决!

问题4:Access库转到MySQL的问题

毕竟数据库已经设计好了,再在PHPMyAdmin中建一次表也很麻烦,索性找个软件来直接转库,还不错让我找到各爆好用的软件,不过全英文界面,名字没记住,明天去公司看看再发上来,库很轻松的转过来了,但是我手很贱,看到MySQL里面的data文件夹下有和我建的数据库一样名字的文件夹,我以为有这个文件夹就不用建库倒库了,一时兴起把没用的都删掉了,问题来了PHPMyAdmin连不上库了,这个倒是好解决,重装了一次MySQL解决问题,可是我没备份就换回ASP环境,再换回来的时候MySQL出大问题了,重装都不管用了,上百度一顿神搜,最终csdn的牛人给了答案“把libmysql.dll和php5ts.dll考到system32下”,解决问题。

第二篇:四川商会php技能培训中心学习总结(二)

四川商会php技能培训中心学习总结

(二)问题5:NTFS权限问题。

这个问题ASP上也出现过,不过换在PHP环境就没多一份心往这方面想,所以足足憋了我一上午,发现这个问题是在朋友的服务器上,前一天喝酒正好认识一个哥们儿遇到php建站的问题了,接着酒劲我就装了一把,说我php多牛多牛啊,知道的我才学2星期,哈哈哈,第二天就给人家解决问题吧,牛都吹出去了也不能不管人家,连上服务器一看原来是安装phpcms的时候遇到了MySQL问题安装无法继续进行了,百度上一顿神搜找到问题关键了是NTFS权限问题,这就好解决了,加个Internet来宾用户就解决了,估计自己以后也会遇到这问题,所以早遇到比晚遇到强,关键时候知道怎么回事儿!

问题6:Cookies读写问题。

这个问题应该不是很大的问题,只不过当天马上下班了,没有来得及解决,第二天很轻易的就搞定了,刚开始学习肯定语句掌握的不多,以为$_COOKIE[“xxx”]既可以读也可以写呢,用到这儿的时候才发现部对路子,上网随便一搜“php cookies 写入”答案就来了,setcookie即可,真简单啊。

问题7:php分页。

用ASP的时候SQL语句也没深入研究,根本就不知道limit这回事儿,我说以前看淘宝、百度的分页上有0 20、20 20这样的参数传递呢,都是干分页用的,稍补了一堂SQL课程问题迎刃而解,页数判断那里原理都一样就没当成问题,一路绿灯解决战斗!

问题8:创建utf-8文件写入中文乱码问题,问题2的后续问题。

一开始就把这个功能做好了,只不过没用中文测试,后来做到有中文的地方发现这里不灵了,哎呀那个头疼啊,这个问题收拾了我好几天,一直没解决,为了不被这个问题困扰,所以就先用英文写入把这里条过去了,昨天必须得解决这里了,所以就硬下头皮整吧,还是BOM的签名问题,以下均为我自己理解,不知道对不对,Windows环境识别UTF-8与ANSI文件靠的是UTF-8文件前的一个叫做BOM签名的东西,这个东西普通的文本编辑器是看不到的 xEF xBF xEE好像是这三个16进制字符,反正是三个东西,问题2里毛病也是他们三个整出来的,UTF-8在Windows下虽然要用这三个家伙区分,在php下确实没有用的东西,要不问题2里面为啥要去掉BOM签名呢,怪就怪我在做ASP的时候遇到过同样的UTF-8文件写入中文乱码问题,所以就留了个心眼,先在网上艘了一个UTF-8文件在php写入的函数,里面就把那三个讨厌的东西加进去了,哎呀我去,这就是聪明反被聪明误,这顿调试就是不行啊,后来我也是恍然大悟,把这三个家伙去掉了,问题解决了,那个畅快啊。

还有很多小问题就不细说了,比如$的转义符是chr(36)啊,SQL中的关键词from啊(在asp中不是关键词),时间函数的使用(巨方便,比ASP的用着舒服)。

第三篇:php学习总结

调试/*………*/ //…….#..........插入时考虑清楚字段类型避免插入后出现缺值,乱码

@ 屏蔽错误or die 条件显示

以前学习php类的总结:

1.php中不能重载,但是能用子类覆盖父类的方法名称来实现新的重载

1.1 在子类中调用父类的覆盖部分可以使用 父类名称::方法名称();

2.final 只能定义类和方法,不能使用final定义成员属性,因为final是常量的意思,在php里定义常量使用的是define函数

2.1 final关键字标记的类不能被继承

2.2 final关键字标记的方法不能被子类重写

3.const是一个定义常量的关键字,在php中定义常量使用的是define()函数,但是在类里定义常量使用的是“const” 这个关键字

3.1在程序中不能修改它的值。

3.2 访问const 修饰的成员属性要使用类名,在本类的方法里使用“self”关键字,但不使用“$”符号,也不能使用对象来访问。

4.static关键字可以描述类中的成员属性和成员方法

4.1 static 的成员属于类,而不属于任何对象,4.2 static的成员是在类第一次被加载的时候分配的空间,其他类无法访问的,只对类的实例共享,能一定程度对类该成员形成保护

4.3 静态成员放到了“初始化静态段”,在类第一次加载的时候放入的,可以让堆内存里的每个对象共享。所以在静态方法里,可以使用这个方法所在的类的“类名”,也可以使用“self”来访问其他静态成员。“self”代表这个静态方法所在的类。

4.3.1 在类里的静态方法是不能访问类的非静态成员的。

4.3.2 在类的非静态方法里可以访问静态成员:”self:成员属性“;

4.4类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样,类似于全局函数。

4.5 在类内函数访问静态变量时前面加self::静态函数

4.6 静态变量可以在类外直接访问,访问方法是类名::静态变量

4.7 静态函数可以在类外直接访问,访问方式是类名::静态函数

4.8 在类内静态函数访问另一个静态函数时使用 类名::静态函数名

4.8.1 静态函数在类内访问静态变量时,访问方式是类名::静态变量

4.8.2 静态函数在类内访问静态变量时,访问方式除了是类名::静态变量外,还可以使用self::静态变量

4.9 在类内静态函数访问另一个静态函数时除了使用 类名::静态函数名外,还可以使用self::静态函数名,也可以直接调用静态函数

4.10 静态函数内不能访问非静态变量

4.11 在类内静态函数不能使用$this->非静态函数名访问非静态函数,可以使用self::非静态函数名

4.12

5.类里的”$this“,在php里面提供了一个本对象的引用$this,每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用。

5.1 $this 就是对象内部代表这个对象的引用。

6.类里“self”,self 和$this相似,只不过self是代表这个静态方法所在的类,所以在静态方法里,可以使用这个方法所在的类的”类名“,也可以使用“self”来访问其他的静态成员,通常使用后者”self::成员属性“。

7.类里”__“开头的函数名

7.1类里”__“开头的函数名都是在某一时刻不同情况下自动调用执行的方法。

7.2__toString()方法也是自动被调用,是直接输出对象引用时自动调用的。比如“$p = new Person()”,直接用echo输出$p会产生错误,如果在类里定义了__toString()方法,再用echo直接输出对象引用的时候就不会产生错误了

8.对象串行化

8.1 __sleep()方法,在对象串行化的时候,会调用一个__sleep()方法来完成一些睡前的事情,__sleep()函数不接受任何参数,但返回一个数组,其中包含需要串行化的属性。未被包含的属性降在串行化时被忽略,如果没有__sleep()方法,php将保存所以属性.8.2 __wakeup()方法,在重新醒来时,即由二进制串重新组成一个对象的时候,则会自动调用__wakeup(),做一些对象醒来就要做的动作。

8.3 有时你可能需要一个对象在反串行化后立即执行.为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.9.protected 成员能被同个类中的所有方法和继承出的类的中所有方法访问到,不能被父类的实例直接访问。protected and public 可以动态绑定

10.private 大部分private属性仍然可以被外部代码共享.解决方法是用一对public方法,一个是get(获取属性的值),另一个是set(设置属性的值).10.1private 不可以动态绑定。Private成员只存在于它们所在的类内部.不像public和protected成员那样,PHP模拟静态绑定.10.2 什么时候用到private?private成员只有当你不想让子类继承改变或特殊化父类的行为时才用到,这种情况比你想像的要少,通常来说,一个好的对象分层结构应当允许绝大多数功能被子类特殊化,改进,或改变—这是面向对象编程的基础之一。一定的情况下需要private方法或变量,例如当你确信你不想允许子类改变父类中的某个特定的部份。

11.抽象类:抽象方法是就像子类中一般的方法的占位符(占个地方但不起作用),它与一般方法不同—没有任何代码.如果类中存在一个或更多抽象方法, 那么这个类就成了抽象类.你不能实例化抽象类.你必须继承它们,然后实例化子类.你也可以把抽象类看成是子类的一个模板.如果你覆写所有的抽象方法, 子类就变成一个普通的类.如果没有覆写所有方法, 子类仍是抽象的.如果一个类中中包含有抽象方法(哪怕只有一个), 你必须声明这个类是抽象的, 在class关键字前加上abstract.声明抽象方法的语法与声明一般方法不同.抽象方法的没有像一般方法那样包含在大括号{}中的主体部份,并用分号;来结束.12.接口:如果你建立了一个只有抽象方法的类,你就定义了一个接口(interface).为了说明这种情况, PHP中有interface 和implements关键字.你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口.例如, 你可以写一个myClass implements myIterface.这两种方法可以依个人偏爱来选择.12.1 如果接口中出现非抽象方法.会报错

12.2 接口中的方法默认是public 型的.其它类型的修饰符,不能修饰接口中的抽象方法.12.3 即使接口中所有的方法都是抽象方法,也不能使用 abstract 修饰.也不能用final

12.4 即使接口中所有的方法都是抽象方法,在接口中,可以声明静态方法.12.5 在接口中可以有常量,e.g.:

<?

interfaceUser{

const MAX_GRADE = 99;

function getName();

function setName($_name);

}

?>

13.Namespace关键字给一块代码命名.在这个代码块外部,脚本必须用操作符::加上命名空间的名称来引用这个代码块.引用静态的类成员也是用相同的方法.在命名空间内代码不需要声明命名空间, 它本身就是默认的.这种方法比添加前缀的方法好.你的代码可由此变得更加紧凑和可读.你可能想知道是否可以建立分层的(嵌套的)命名空间.答案是不可以.但你可以在命名空间名称后加上冒号, 你可以再次调用在名称中不包含冒号的变量,函数和类.命名空间允许存在冒号,只要不是第一个字符和最后一个字符或接着另一个冒号.命名空间的名称中的冒号对于PHP来说没有任何意义, 但如果你用他们来区分逻辑上的区块, 他们可以很好地说明你的代码中的父子(parent-child)关系.14.__toString()打印对象会调用它的__toString方法.15.不能实例化的类

<?

//

//当__construct()为public时可以实例化

class A{

private function __construct(){}

}

$a = new A();//fail

?>

15.1

//static的方法留给外部访问.

<?

class A{

private function __construct(){}

static function getClassA(){

return “这里是后门,可以通过这里进入类内部..”;

}

}

echo A::getClassA();

?>

15.2

//不能用new实例化的类.

//static的方法留给外部访问.

//在方法内部返回实例.

<?

class A{

private function __construct(){

echo “this is construction
n”;

}

static function getClassA(){

$a = new A();

return $a;

}

}

// 看到这里确实返回的是 A 的实例.但不是同一个对象.$a1 = A::getClassA();

$a2 = A::getClassA();

echo “$a1 的类是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){

echo “
$a1 $a2 指向同一对象.”;

}else{

echo “
$a1 $a2 不是一个对象.”;

}

//this is construction

//this is construction

//$a1 的类是 A , $a2 是 A

//$a1 $a2 不是一个对象.?>

15.3

//不能用new实例化的类.
//static的方法留给外部访问.
//在方法内部返回实例.

//定义静态属性保证这个实例能被静态方法调用.

//增加判断部分.

<?

class A{

private static $a = null;

private function __construct(){}

static function getClassA(){

if(null == self::$a){

self::$a = new A();

}

return self::$a;

}

}

// 看到这里确实返回的是 A 的实例.但不是同一个对象.$a1 = A::getClassA();

$a2 = A::getClassA();

echo “$a1 的类是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){

echo “
$a1 $a2 指向同一对象.”;

}else{

echo “
$a1 $a2 不是一个对象.”;

}

//$a1 的类是 A , $a2 是 A

//$a1 $a2 指向同一对象.?>

第四篇:PHP学习推荐

PHP学习推荐

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,现在越来越多的人加入到了php的大家庭中,其中很多人只是浅尝辄止,为何会如此呢?最大的障碍莫过于学习的过程枯燥乏味,从而失去学习兴趣,那么小编就自己的经验来说说怎样学习php吧。

学习方法之视频教程

相对于读书来说,我更喜欢看视频学习,可能小编我对影像比文字记忆更加深刻吧。每看完一个视频教程,我都会闭上眼睛休息一会,把刚才看的内容消化消化,然后再开始练习刚才看过的内容,尽可能不边看边做,因为这样学的快同样也忘得快,如果实在想不起来的话,可以再打开教程看一遍,切记不可囫囵吞枣,好高骛远,要稳扎稳打,把你看过的教程切切实实的记在心里。只有一步一个脚印,你的学习之路才能走的更远,否则的话,你走的越远,越会觉的道路是如此艰辛,或许你就会放弃学习。那么都有哪些视频教程能帮我们学习php呢,小编我就为大家介绍几个吧:

php100

LAMP兄弟连

李炎恢的php

学习方法之看书: 1.《PHP与MySQL程序设计(第4版)》

2.《PHP Web 2.0 开发实战》

3.《PHP高级程序设计:模式、框架与测试》

4.《PHP 5 高级应用开发实践》

5.《细说php》

学习过程中不要死记语法,要多动手,多练习,当你遇到问题的时候,首先尝试自己解决。多用google,baidu,网络是一个大知识库,是最好的老师,你遇到的问题,别人也遇到过,多去搜索一下吧.多阅读别人的源代码,要看懂别人的设计思想,不断融为已用.

第五篇:PHP面试题(一)

PHP程序员面试题

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中 <?php //本页地址,SCRIPT_NAME也可以:php/test.php echo $_SERVER['PHP_SELF'].“
”;//链接到当前页面的前一页面的 URL 地址: echo $_SERVER['HTTP_REFERER'].“
”;

//其它的见参考手册:语言参考》变量》预定义变量

//前执行脚本的绝对路径名:D:Inetpub,如何得到它的内容?($1分)

//需要读取的page地址

$http_page_url=“http://”;//打开远程文件

$read_file=fopen($http_page_url,“rb”);if(!feof($read_file)){ //读取远程文件 $file_stream = “";do { $data = fread($read_file, 8192);if(strlen($data)== 0){ break;} $file_stream.= $data;} while(true);}

echo $file_stream;//输出内容

对 PHP 5 及更高版本可以:

$handle = fopen(”http://“, ”rb“);

$contents = stream_get_contents($handle);

fclose($handle);

echo $contents;?>

最简单的方法是调用函数:

print file_get_contents('http://');

?>

18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

状态值为401,代表未被授权;header(”Location: http://代码的办法。(1分)

1.echo ‘’;直接输出

2.require include 包含进来一段html代码

3.由XML文件得到

36、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)(a)fget()(b)file_open()(c)fopen()(d)open_file()

(c)是正确的

37、下面哪个选项没有将 john 添加到users 数组中?(1分)(a)$users[] = ‘john’;

(b)array_add($users,’john’);

(c)array_push($users,‘john’);(d)$users ||= ‘john’;

(b)(d)均是错误的写法

38、下面的程序会输入是否?(1分)$num = 10;function multiply(){ $num = $num * 10;} multiply();echo $num;?> 输出 10

39、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来(2分)表名User Name Tel Content Date 张三 *** 大专毕业 202_-10-11 张三 *** 本科毕业 202_-10-15 张四 021-55665566 中专毕业 202_-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect(“local”,“root”,“pass”);@mysql_select_db(“DB”,$mysql_db);

$result=mysql_query(“select * from User where Name='张三'”);while($row=mysql_fetch_array($result)){ echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];echo “ ”;}

40、如何使用下面的类,并解释下面什么意思?(3)class test{ function Get_test($num){ $num=md5(md5($num).“En”);return $num;} }

双重md5加密

$testObject = new test();$encryption = $testObject->Get_test(“xiaotian_ls”);

41、写出 SQL语句的格式 : 插入,更新,删除(4分)表名User Name Tel Content Date 张三 *** 大专毕业 202_-10-11 张三 *** 本科毕业 202_-10-15 张四 021-55665566 中专毕业 202_-10-15(a)有一新记录(小王 *** 高中毕业 202_-05-06)请用SQL语句新增至表中

Insert INTO User('Name','Tel','Content','Date')VALUES('小王','***','高中毕业','202_-05-06')(b)请用sql语句把张三的时间更新成为当前系统时间

Update User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d')Where Name='张三'(c)请写出删除名为张四的全部记录

Delete FROM User Where Name='张四'

42、请写出数据类型(int char varchar datetime text)的意思;请问varchar和char有什么区别(2分)

int 数值类型 char 固定长度字符串 varchar 可变长字符串 datetime 日期时间型 text 字符字符串

char列的长度固定为创建表时声明的长度.varchar列中的值为可变长字符串.43、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)

AUTO_INCREMENT

44、写出以下程序的输出结果(1分)$b=201;$c=40;$a=$b>$c?4:5;echo $a;?> 4

45、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

isset($a)empty($a)

46、取得查询结果集总数的函数是?(1分)

mysql_num_rows($res);

47、$arr = array('james', 'tom', 'symfony');请打印出第一个元素的值(1分)

echo $arr[0];

48、请将47题的数组的值用','号分隔并合并成字串输出(1分)

echo $arr[0].$arr[1].$arr[2];

49、$a = 'abcdef';请取出$a的值并打印出第一个字母(1分)

echo $a{0};

50、PHP可以和sql server/oracle等数据库连接吗?(1分)可以

51、请写出PHP5权限控制修饰符(3分)

private protected public

52、请写出php5的构造函数和析构函数(2分)

__construct __destruct

53、以下请用PHPMYADMIN完成

(一)创建新闻发布系统,表名为message有如下字段(3分)id 文章id title 文章标题 content 文章内容

category_id 文章分类id hits 点击量

Create TABLE 'message'('id' int(11)NOT NULL auto_increment, 'title' varchar(200)default NULL, 'content' blob, 'category_id' int(11)default NULL, 'hits' int(11)default NULL, PRIMARY KEY('id'))ENGINE=InnoDB DEFAULT CHARSET=utf8(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下(4分)comment_id 回复id id 文章id,关联message表中的id comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

Select message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`)hits,IF(comment.`id` is NULL,0,count(*))number FROM message LEFT JOIN comment ON message.id=comment.id GROUP BY message.`id`

(三)上述内容管理系统,表category保存分类信息,字段如下(3分)category_id int(4)not null auto_increment;categroy_name varchar(40)not null;用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单

function categoryList(){ $result=mysql_query(“select category_id,categroy_name from category”)or die(“Invalid query: ”.mysql_error());print(“n”);while($rowArray=mysql_fetch_array($result)){ print(“".$rowArray['categroy_name'].”n“);} print(”");}

四川商会php技能培训中心学习总结(一)
TOP