PHP与Mysql练习题二 联系客服

发布时间 : 星期五 文章PHP与Mysql练习题二更新完毕开始阅读85748ceff5335a8102d220e1

2. 继承性: 就是子类自动继承其父级类中的属性和方法,并可以可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。 php只支持单继承,也就是说一个子类只能有一个父类。 3. 多态性: 子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。 于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。 多态性增强了软件的灵活性 101.常见框架 thinkPHP yii ZendFramework CakePhp sy

102. 常用魔术方法的触发时机? 1)__autoload() :当程序实例化某个类,而该类没有在当前文件中被引入。此时会触发执行__autoload()。程序希望通过该方法,自动引入这个类文件。该方法有一个参数,即就是那个忘记引入的类的名称。__autoload()方法的工作原理是什么?当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后,就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。使用自动载入的魔术函数可以不必要写很多个include或者require函数。 2)__construct() :这个是魔术构造方法。构造方法是实例化对象的时候自动执行的方法,作用就是初始化对象。该方法可以没有参数,也可以有多个参数。如果有参数,那么new这个对象的时候要记得写上相应的参数。在php5以前,没有魔术构造方法,普通构造方法是一个跟类名同名的方法来实现构造的。如果一个类中既写了魔术构造方法,又定义了普通构造方法。那么php5以上版本中,魔术方法起作用,普通构造方法不起作用。反之,在php5以前版本中,不认识魔术构造方法,只是把该方法当做普通的方法。 3)__destruct() :这个是魔术析构方法。析构方法的作用和构造方法正好相反,是对象被销毁时被自动调用的,作用是释放内存。析构方法没有参数。 4)__call() :当程序调用一个不存在或不可见的成员方法时,自动触发执行__call()。它有两个参数,分别是未访问到的方法名称和方法的参数。而第二个参数是数组类型。 5)__get() :当程序调用一个未定义或不可见的成员属性时,自动触发执行__get()。它有一个参数,表示要调用的属性的名称。 6)__set():当程序试图写入一个不存在或不可见的成员属性时,PHP就会自动执行__set()。它包含两个参数,分别表示属性名称和属性值。 7)__tostring() :当程序使用echo或print输出对象时,会自动调用该方法。目的是希望通过该方法将对象转化为字符串,再输出。__tostring() 无参数,但是该方法必须有返回值 8)__clone() :当程序clone一个对象的时候,能触发__clone()方法,程序希望通过这个魔术方法实现:不仅仅单纯地克隆对象,还需要克隆出来的对象拥有原来对象的所有属性和方法。

104、 访问权限修饰符有哪几种,对比解释 答:1、public 表示公共的,在本类中和子类中以及类外,可以对其调用 2、protected表示受保护的,可以在本类中和子类中调用 3、private表示私有的,只能在本类中调用 4、var,效果等同于public

105、 Class关键词前可以有哪些修饰词 a) Final修饰,表示该类是最终的,无法继承 b) Abstract修饰,表示该类是抽象类 106、 作用域操作符在那些场合下使用 答:作用于操作符的使用场合 a) 本类中: i. self::类常量 ii. self::静态属性 iii. self::方法() parent::方法() b) 子类中: i. parent::类常量 ii. parent::静态属性(public或者protected) iii. parent::方法()(public或者protected) c) 类外: i. 类名::类常量 ii. 类名::静态属性(public) iii. 类名::静态方法(public)

107、 $this,self, parent分别代表什么?哪些场合下使用 答:$this代表的是当前对象 self代表的是当前的类 parent代表的是当前类的父类 使用场合: $this只能使用在当前类中,通过$this->可以调用当前类中的属性和方法; self只能在当前类中使用,通过作用域操作符::访问当前类中的类常量、当前类中的静态属性、当前类中的方法; parent只能使用在有父类的当前类中,通过作用域操作符::访问父类中的类常量、父类中的静态属性、父类中的方法。

108、 说明是接口、抽象类二者有何相同和不同的地方? 1、接口是帮助php实现功能意义上的多继承的,用interface来声明,其方法没有方法体,使用implemens关键词来实现接口。 接口中只能包含抽象方法和类常量,不可以包含成员属性。 2、抽象类是一种不能被实例化的类,只能作父类,用abstract class来定义,抽象类和普通类可以没有区别,类中可以包含成员属性、类常量、方法。 子类得用extends来继承,而且只能是单继承。 两者相同点是都不可以被实例化,都是需要被继承才可以使用。 两者的最大区别是接口可以实现多继承,而抽象类只能是单继承。 接口中不能包含成员属性,而抽象类中可以有成员属性。 接口中的抽象方法必须是public或者无访问修饰词,接口中的抽象方法不能用abstract来修饰。

抽象类中的方法可以是普通方法,也可以是抽象方法,如果是抽象方法,一定需要使用abstract来修饰。

113、 $_REQUEST、$_GET、$_POST、$_COOKIE 的关系和区别: 1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有内容,是它们的集合体。 2.通过$_REQUEST获取变量值,PHP页面因为不确定它是哪种传值方式, 因此会根据php.ini中的配置来接收值。 php.ini里可以设置,variables_order = “GPC”。其含义是GET,POST,COOKIE. 所以PHP页面会先从$_GET中获取,再从$_POST中获取,然后从$_COOKIE中获取。 新获得的值会覆盖之前获取到的值。 因此从表现形式上看,$_REQUEST最后是获取$_COOKIE中的值,如果$_COOKIE中没有值, 会获取$_POST中的值,如果$_POST没有获取到 ,就去$_GET中获取。 如果$_GET中也没有该值,那么$_REQUEST就返回null。 114、 什么是多条件查询(复合查询),如何实现多条件查询? 如何实现万能查询呢?查询的时候要填写查询条件,这些条件会通过表单进行提交。 首先需要检查提交的条件是否为空。如果不为空,就认为这个值是要被当作条件, 我们就可以使用字符串连接的方式来组合一个sql查询语句。 当执行后获取查询结果。

115. 文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题? 1). 首现要在php.ini中开启文件上传; 2). 在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改; 3). 上传表单一定要记住在form标签中写上enctype=\; 4). 提交方式 method 必须是 post; 5). 设定 type=\的表单控件,并且必须具有name属性值; 6). 为了上传成功,必须保证上传文件的大小是否超标、文件类型是否符合要求,上传后存放的路径是否存在; 7). 表单提交到接收页面,接收页面使用$_FILES来接收上传的文件。 $_FILES是个多维数组。第一维下标是上传控件的name,二维下标分别为name/type/tmp_name/size/error。分别代表 文件名、文件类型、上传到临时目录下的临时文件名、文件大小、是否有错误。 如果是批量上传,那么二维下标就是数组,而并非是字符串。 8). 文件上传后是被放置在服务器端临时路径下,需要使用move_uploaded_file ()函数,才可以将上传后的 文件保存到指定目录。 9). 为了避免上传文件重名,可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名。

119. 什么是事务?什么是回滚?事务的作用是什么? 事务就是组合起来的几个独立的sql操作。如果其中一项失败,那么就让这几个组合起来的sql操作都 回退到未执行状态。这就是事务的回滚。 mysql中MyISAM存储引擎的表不支持事务,只有InnoDB 存储引擎的表才支持事务,为了让事务正常执行, 就需要让参与事务的所有数据表都设置成innoDB类型。

事务被包装在了 BEGIN 和 COMMIT 语句之间。在没有使用 COMMIT 语句的情况下,对数据库的操作不是永久的, 一旦运行了 ROLLBACK,就会被回退。只有执行了COMMIT,数据表中的信息才被改动。 事务的目的就是为了保证数据的完整性。

120. 模拟SESSION机制实现数据库存放会话数据有什么作用?【备用】

如果使用默认的SESSION机制,大家都知道默认的SESSION_ID是存放在COOKIE中,用户的身份是靠SESSION_ID来识别的, 而COOKIE文件是存放在用户浏览器的客户端,这样就会带来一个问题,当用户在办公室选择一些商品到购物车, 在准备下订单付款的时候,用户选择了支付宝在线的支付方式,恰巧办公室的电脑上面没有安装支付宝的数字证书, 而在用户家里的电脑安装过数字证书,所以呢,用户就需要回家去支付。但是回家登录商城之后, 发现购物车中精心挑选的商品都不存在了。这是为什么呢?问题就在家里电脑上的并没有存放SESSION_ID的cookie文件, 因而就无法正确的读取服务器上对应session文件中的数据,所以无法将原来的选择的商品息读取过来。 这样的购物车功能给用户的用户体验式非常糟糕的,所以我们就需要采取模拟SESSION机制使用数据库来存放会话数据。 5. 当通过以下sql语句就可以实现,相同顶级类下的信息都在一起集中显示。 select * from 表名 where 条件 order by path; 122. 分页原理是什么? 数据分页需要以下几个条件: 1. 参与分页的总条数 【$msg_count】 ,该值通过数据库查询可以获取到; 2. 每页显示的条数【$pagesize】 ,这个数值由自己定义; 3. 当前页的页码数 【$page】,该数值通过地址栏传递和接收; 4. 可以通过以上资料计算出总页数 【$pagecount】 ,此处需要借助ceil(); 【$pagecount = ceil($msg_count/$pagesize);】 5. 数据库查询借助sql语句中的【limit】来实现数据的变化: 例如: select * from 表名 where 条件 limit $startnum , $pagesize; 而$startnum = ($page-1)*$pagesize; 125、 写程序实现如下功能: a.如何判断一个字符串中是否存在一个字符? echo strstr('abcdefgcd' , 'cd'); echo strpos('ab0defgcd' , 'cd'); b.如何判断一个字符串中一个字符出现的次数? echo substr_count('abcdefgcd' , 'cd'); c.如何去掉一个字符串的最后一个字符 echo substr('abcdefgcd' , 0 , -1); PHP网络编程 期中考试试题

一、 单项选择题(每题3分共计30分)

1、在HTML中嵌入PHP代码,有以下几种方法,其中错误的是()。 A. 以””结束,中间为PHP代码。