编写php程序显示表中的内容,第一篇php常见笔试题

1.表单中get与post提交方法的区别?

答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

2.session与cookie的区别?

①cookie数据存放在客户的浏览器上,session数据放在服务器上

②cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session

③session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE

④单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

3.数据库中的事务是什么?

答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作 完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

4.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)

//strtotime成功则返回时间戳,否则返回FALSE

echo date("Y-m-d H:i:s",strtotime("now")), "\n";

echo date("Y-m-d H:i:s",strtotime("10 September 2000")), "\n";

echo date("Y-m-d H:i:s",strtotime("+1 day")), "\n";

echo date("Y-m-d H:i:s",strtotime("+1 week")), "\n";

echo date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "\n";

echo date("Y-m-d H:i:s",strtotime("next Thursday")), "\n";

echo date("Y-m-d H:i:s",strtotime("last Monday")), "\n";

echo date("Y-m-d H:i:s",strtotime("-1 day")), "\n";

2016-09-21 21:42:40

2000-09-10 00:00:00

2016-09-22 21:42:40

2016-09-28 21:42:40

2016-10-01 01:42:42

2016-09-22 00:00:00

2016-09-19 00:00:00

2016-09-20 21:42:40

5.能够使HTML和PHP分离开使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

6.使用哪些工具进行版本控制?

Git、svn、vss、cvs

7.反转字符串,如何实现字符串翻转?(3分) revease  strrev

strrev("hello world!")

8.优化MYSQL数据库的方法。

①、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM

②、使用连接(JOIN)来代替子查询:

a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

c.提高b的速度优化:

SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid

WHERE orderinfo.customerid IS NULL

③、使用联合(UNION)来代替手动创建的临时表

a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`

④、事务处理:

a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败

mysql_query(“BEGIN”);

mysql_query(“INSERT INTO customerinfo (name) 8i VALUES (‘$name1′)”;

mysql_query(“SELECT * FROM `orderinfo` where customerid=”.$id”);

mysql_query(“COMMIT”);

⑤、锁定表,优化事务处理:

a.我们用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。

包含有WRITE(write)关键字的LOCK TABLE语句可以保证在UNLOCK TABLES命令被执行之前,

不会有其它的访问来对inventory进行插入、更新或者删除的操作

mysql_query(“LOCK TABLE customerinfo READ, orderinfo WRITE”);

mysql_query(“SELECT customerid FROM `customerinfo` where id=”.$id);

mysql_query(“UPDATE `orderinfo` SET ordertitle=’$title’where customerid=”.$id);

mysql_query(“UNLOCK TABLES”);

⑥、使用外键,优化锁定表

a.把customerinfo里的customerid映射到orderinfo里的customerid,

任何一条没有合法的customerid的记录不会写到orderinfo里

CREATE TABLE customerinfo

(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo

(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo

(customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:’ON DELETE CASCADE’,该参数保证当customerinfo表中的一条记录删除的话同时也会删除order

表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;

⑦、建立索引:

a.格式:

(普通索引)->

创建:CREATE INDEX ON tablename (索引字段)

修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

(唯一索引)->

创建:CREATE UNIQUE ON tablename (索引字段)

修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

(主键)->

它是唯一索引,一般在创建表是建立,格式为:

CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

⑧、优化查询语句

a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作

例子1:

SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

SELECT * FROM order WHERE orderDate

例子2:

SELECT * FROM order WHERE addtime/7<24;(慢)

SELECT * FROM order WHERE addtime<24*7;(快)

例子3:

SELECT * FROM order WHERE title like "%good%";

SELECT * FROM order WHERE title>=”good”and name

9.对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量。

10.用PHP写出显示客户端IP与服务器IP的代码

echo "客户端::".getenv('REMOTE_ADDR')." or ".$_SERVER['REMOTE_ADDR'];

echo "服务端::".gethostbyname("www.baidu.com");

11.如何用最简单的方法打印$str =“abcde”每个字母;可以用substr()

答:for($i=0;$i

Echo substr($str,$i,1);//或$string{$i}或$string[$i]

}

备注:都是向前的,第三个参数若为空则说明第二个参数指定下标后剩余的都要完

echosubstr('abcdef',1);// bcdef

echosubstr('abcdef',1,3);// bcd

echosubstr('abcdef',0,4);// abcd

echosubstr('abcdef',0,8);// abcdef

echosubstr('abcdef', -1,1);// f

// Accessing single characters in a string

// can also be achived using "curly braces"

$string='abcdef';

echo$string{0};// a

echo$string{3};// d

echo$string{strlen($string)-1};// f

$rest=substr("abcdef", -1);// returns "f"

$rest=substr("abcdef", -2);// returns "ef"

$rest=substr("abcdef", -3,1);// returns "d"

12.语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

Require是无条件包含、无返回值(快的原因?),无论条件成立与否都会先执行require,但若其文件不存在或有语法错误则会报出fatal error致命性错误。

Include是有条件包含、有返回值,若文件不存在或语法错误会给出warning警告,但脚本仍继续执行

13.如何修改SESSION的生存时间(1分).

答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

14.如何修改SESSION的生存时间?

方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

方法2:$savePath =“./session_save_dir/”;

$lifeTime =小时*秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

方法3:setcookie() and session_set_cookie_params($lifeTime);

$readcontents = fopen("http://www.phpres.com/index.html", "rb");

$contents = stream_get_contents($readcontents);

fclose($readcontents);

echo $contents;

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

答:状态401代表未被授权,header(“Location:www.xxx.php”);

17.在PHP中error_reporting这个函数有什么作用? (1分)

设置错误级别与错误信息回报

18.PECL和PEAR是什么?

PEAR: PHP Extension and Application Repository(PHP扩展和应用仓库)补充的是上层功能

将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService等许多方面,用户可以通过下载这些类库并适当的作一些定制以实现自己需要的功能

PECL: PHP Extension Community Language(PHP扩展库)补充的是底层功能

PECL可以看作PEAR的一个组成部分,提供了与PEAR类似的功能。不同的是PEAR的所有扩展都是用纯粹的PHP代码编写的,用户在下载到PEAR扩展以后可以直接使用将扩展的代码包含到自己的PHP文件中使用。而PECL是使用C语言开发的,通常用于补充一些用PHP难以完成的底层功能,往往需要重新编译或者在配置文件中设置后才能在用户自己的代码中使用

19.简述如何得到当前执行脚本路径,包括所得到参数。(2分)

答:$script_name = basename(__file__); print_r($script_name);

20.foo()和@foo()之间有什么区别?(1分)

答:@foo()控制错误输出

21.mysql_fetch_row()和mysql_fetch_array之间有什么区别? (1分)

mysql_fetch_row是从结果集取出1行数组,作为枚举

mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

22.写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)

DESC是descend降序意思asc是ascend升序。

答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

注:MySQL数据库limit分页、排序-SQL语句示例

select * from persons limit  A,  B;

解释:A,查询起点 ,若为limit B则默认A为0

B,你需要的行数

23.请说明php中传值与传引用的区别。什么时候传值什么时候传引用?

24.请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

按引用传递则不需要复制值,对于性能提高很有好处。

25.在PHP中error_reporting这个函数有什么作用?

设置错误级别与错误信息回报

26.请写一个函数验证电子邮件的格式是否正确(2分)

dy@sina.com

8047@qq.com

yahu@.com.cn

dy@163.com

dy_35

答:function checkEmail($email)

{

$pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";

return preg_match($pregEmail,$email);

}

27.

28、如何使用下面的类,并解释下面什么意思?(3)

class test{

function Get_test($num){

$num=md5(md5($num)."En");

return $num;

}

}

答:$testnum = "123";

$object = new test();

$encrypt = $object->Get_test($testnum);

echo $encrypt;

类test里面包含Get_test方法,实例化类调用方法多字符串加密

29、写出SQL语句的格式:插入 ,更新 ,删除(4分)

表名User

Name Tel Content Date

张三13333663366大专毕业2006-10-11

张三13612312331本科毕业2006-10-15

张四021-55665566中专毕业2006-10-15

(a)有一新记录(小王13254748547高中毕业2007-05-06)请用SQL语句新增至表中

mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES

('小王','13254748547','高中毕业','2007-05-06')")

(b)请用sql语句把张三的时间更新成为当前系统时间

$nowDate = date("Ymd");

mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='张山'");

(c)请写出删除名为张四的全部记录

mysql_query("DELETE FROM `user` WHERE name='张四'");

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

答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串

char的场地固定为创建表设置的长度,varchar为可变长度的字符

31、写出以下程序的输出结果(1分)

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

?>

答:4

33.GD库是做什么用的? (1分)

答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

34.下面哪个选项没有将john添加到users数组中? (1分)

(a) $users[] = 'john’;

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

(c) array_push($users,'john’);

(d) $users ||= 'john’; [ a , c ]

注:array_push()将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。

35.写一个函数,尽可能高效的,从一个标准url里取出文件的扩展名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php

36.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值