美文网首页
PHP面试题附答案(实战经验)

PHP面试题附答案(实战经验)

作者: 6c6d6c68336c | 来源:发表于2020-04-03 16:18 被阅读0次

    什么事面向对象?主要特征是什么?

    面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。

    isset() 和 empty() 区别

     Isset判断变量是否存在,如果存在则返回真,empty判断变量是否为空为假,如果为空为假则返回真。

    SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明? 

    1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。

    2、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。

    禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。

     

    include与require的区别?

    1.include()在执行文件时每次都要进行读取和评估

      require()文件只处理一次(实际上文件内容替换了require()语句)

    2.require()通常放在PHP脚本程序的最前面

      include()的使用和require()一样,一般放在流程控制的处理区段中,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化

    3,require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样

    4,include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.

    5,require()包含文件失败,停止执行,给出错误(致命的)

    include()常用于动态包含.

    通常是自动加载的文件,即使加载出错,整个程序还是继续执行

    一个页面声明,另一个页面调用

    包函文件失败,继续向下执行,返回一条警告

    HTTP 状态中302、403、 500200、404、502代码含义?

    一二三四五原则: 一. 消息系列 二. 成功系列   三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列  302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。200是请求成功,404是文件未找到,502是服务器内部错误。

    PHP字符串中单引号与双引号的区别?

    单引号不能解释变量,而双引号可以解释变量。

    单引号不能转义字符,在双引号中可以转义字符。

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

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

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

        优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

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

    [if !supportLists]19、[endif]Int 整数 char 定长字符 Varchar 变长字符 Datetime 日期时间型 Text 文本型 Varchar 与char的区别 char是固定长度的字符类型,分配多少空间,就占用多长空间。 Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。 Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些

    in, not ni, exist, not exist的作用和区别?

    in在什么中

    Not in 不在什么中

    Exists 存在

    Not exists 不存在

    面向对象中接口和抽象类的区别及应用场景?

    1、有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义。

    2、接口中全部是抽象方法,方法不用使用abstract定义。

    3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。

    echo(),print(),print_r()的区别?

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)  

       Print()只能打印出简单类型变量的值(如int,string)  

       print_r()可以打印出复杂类型变量的值(如数组,对象)  

       echo  输出一个或者多个字符串

     

    MyISAM 和 InnoDB 的基本区别?索引结构如何实现?

    MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

    创建索引:alert table tablename add index (`字段名`)

    什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?

    索引用来快速地寻找那些具有特定值的记录。

    主键索引和唯一索引的区别:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键。唯一索引索引列的所有值都只能出现一次,即必须唯一。

    索引的缺点:

    1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

    2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。

    3、当对表中的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

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

    表单中get与post提交方法的区别? 1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

      2. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

      3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

    get安全性非常低,post安全性较高。

    简述0000000中无限分类的实现原理

    1、数据库分类表的设计:id字段、父id字段、类名称字段、path字段

    2、Path字段存当前分类的路径,格式:0,父类id,本身id

    3、查询分类:select * from 分类表order by path asc;

    4、这样就查出来每个分类及其对应的子类。

    foo()和@foo()之间有什么区别?(1分) @foo()控制错误输出

    线性表和顺序表的区别?

    1、线性表包括顺序表和链表。

    2、顺序表中的元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的。

    使用那些工具进行版本控制?

    Clear case、CVS、SVN、PVCS、Perforce、CCC、StarTeam、RCS

    写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十几个引擎

    你对Memcach的理解,优点有哪些?

    Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。

    Memcache的优点:稳定、配置简单、多机分布式存储、速度快。

    实现中文字串截取无乱码的方法

    Mb_substr();

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

    获取客户端IP:get_env(“REMOTE_ADDR”);

    获取服务器端IP:$_SERVER["SERVER_ADDR"];

    数据库索引有几类,分别是什么?什么时候该用索引?

    普通索引、主键索引、唯一索引

    并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。

    写几个魔术方法并说明作用?

    __call()当调用不存在的方法时会自动调用的方法

    __autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件

    __set()当给未定义的变量赋值时会自动调用的方法

    __get()当获取未定义变量的值时会自动调用的方法

    __construct()构造方法,实例化类时自动调用的方法

    __destroy()销毁对象时自动调用的方法

    __unset()当对一个未定义变量调用unset()时自动调用的方法

    __isset()当对一个未定义变量调用isset()方法时自动调用的方法

    __clone()克隆一个对象

    __tostring()当输出一个对象时自动调用的方法

    $_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?

    它们都是PHP预定义变量

    $_REQUEST用来获取post或get方式提交的值

    $_POST用来获取post方式提交的值

    $_GET用来获取get方式提交的值

    $_COOKIE用来获取cookie存储的值

    $_SESSION用来获取session存储的值

    $_FILE用来获取上传文件表单的值

    数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案?

    瓶颈主要有:

    1、磁盘搜索 优化方法是:将数据分布在多个磁盘上

    2、磁盘读/写 优化方法是:从多个磁盘并行读写。

    3、CPU周期 优化方法:扩充内存

    4、内存带宽 

    了解XSS攻击吗? 如何防止 ?

    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。

    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。

    SQL注入漏洞产生的原因 ? 如何防止?

    SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

    描述一下大流量高并发量网站的解决方案

       1、确认服务器硬件是否足够支持当前的流量。

       2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。

       3、禁止外部的盗链。

       4、外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链,目前可以简单的通过refer来控制盗链,apache自己就可以通过配置来禁止盗链。

       5、控制大文件的下载。

    大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降。

       6、使用不同的主机分流主要流量

       7、使用流量统计软件。

    在网站上安装一个流量统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化。

       8、分库分表。

       9、Sphinx全文索引引擎。

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

    优化程序,优化数据库,如果程序和数据库已经最优化,使用以下解决方法:

    1、确定当前服务器设备是否满足流量需求。

    2、使用Memcache缓存技术,把动态内容缓存到文件中,动态网页直接调用这些文件,而不必再访问数据库。

    3、禁止外部盗链,图片和文件外部盗链会给服务器带来大量的负载压力,可以通过refer来禁止外部盗链,或者使用apache来配置禁止盗链。

    4、控制大文件的下载,大文件的下载对于非SCSI硬盘来说会占用大量的资源,导致服务器的响应能力下降。

    5、使用不同的主机分流主要流量,使服务器均衡负载。

    6、使用流量统计软件统计分析网站流量,可以知道哪些地方耗费了大量的流量,哪些页面需要再进行优化。

    如何设计或配置Mysql,才能达到高效使用的目的

       1、数据库设计方面,设计结构良好的数据库,允许部分数据冗余。

    选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。

       2、系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。

    写高效sql语句,以提高效率。

    使用连接(join)来代替子查询

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

    所得皆必须,只从数据库取必须的数据。

    必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。

    使用事务

    使用外键

    使用索引

    如何进行防SQL注入?

       1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等

    或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

       2、在PHP配置文件中

    Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。

    比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

       3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

       4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

       5、对于常用的方法加以封装,避免直接暴漏SQL语句

       6、开启PHP安全模式

    Safe_mode=on;

       7、打开magic_quotes_gpc来防止SQL注入

       Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。

    因此开启:magic_quotes_gpc=on;

       8、控制错误信息

    关闭错误提示信息,将错误信息写到系统日志。

       9、使用mysqli或pdo预处理。

    用PHP写出一个安全的用户登录系统需要注意哪些方面。

    1、密码要使用MD5(密码+字符串)进行加密。

    2、登录表单的名称不要跟数据库字段一样,以免暴漏表字段。

    3、用户表的表名、字段名、密码尽量用不容易被猜到的。

    4、要使用验证码验证登陆,以防止暴力破解。

    5、验证提交的数据是不是来自本网站。

    6、登录后台处理代码数据库部分使用预处理,做好过滤,防止sql注入。

    字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?

       Implode()、explode()、substr()、str_replace()、strpos、strrpos、strstr

    谈谈对mvc的认识?

    由模型(model),视图(view),控制器(controller)完成的应用程序 由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

    MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

    视图是用户看到并与之交互的界面。

    模型表示企业数据和业务规则。

    控制器接受用户的输入并调用模型和视图去完成用户的需求。

    MVC的优点:低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、可扩展性,有利于软件工程化管理

    MVC的缺点:没有明确的定义,完全理解MVC并不容易。不适合小型规模的应用程序。

    PHP如何抛出和接收错误?

    使用try...catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会抛出一个异常。Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。

    你常用到的mysql命令?

    Show databases

    Show tables

    Insert into 表名() values()

    Update 表名 set 字段=值 where ...

    Delete from 表名 where ...

    Select * from 表名 where 条件 order by ... Desc/asc limit ... Group by ... Having ...

    你所知道的php数组相关的函数?

    array()----创建数组

    array_combine()----通过合并两个数组来创建一个新数组

    range()----创建并返回一个包含指定范围的元素的数组

    compact()----建立一个数组

    array_chunk()----将一个数组分割成多个

    array_merge()----把两个或多个数组合并成一个数组

    array_slice()----在数组中根据条件取出一段值

    array_diff()----返回两个数组的差集数组

    array_intersect()----计算数组的交集

    array_search()----在数组中搜索给定的值

    array_splice()----移除数组的一部分且替代它

    array_key_exists()----判断某个数组中是否存在指定的key

    shuffle()----把数组中的元素按随机顺序重新排列

    array_flip()----交换数组中的键和值

    array_reverse()----将原数组中的元素顺序翻转,创建新的数组并返回

    array_unique()----移除数组中重复的值

    请写出5个常用的unix操作命令

    1、Ls -l

    2、tar -zxvf

    3、Touch

    4、Cat

    5、Mkdir

    6、rm

    你所知道的设计模式有哪些?

    工厂模式、策略模式、单元素模式、观察者模式、命令链模式

    请写出5个常用的SQL操作关键字

    Select ,update, delete, insert into, 

    create ,group by ,order by

    有一个网页地址, 比如PHP开发资源网主页:http://www.phpres.com/index.html,如何得到它的内容?

    获取网页内容:

    $url=”http://www.phpres.com/index.html“;

    $str=file_get_contents($url);

    MYSQL取得当前时间的函数是?,格式化日期的函数是(2分) now(),date()

    优化MYSQL数据库的方法。(4分,多写多得)1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM2、使用连接(JOIN)来代替子查询:3、使用联合(UNION)来代替手动创建的临时表4、事务处理:5、锁定表,优化事务处理:6、使用外键,优化锁定表7、建立索引: 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[索引字段])8、优化查询语句

    求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

    $begin=strtotime(“2007-2-5″);$end=strtotime(“2007-3-6″);echo ($end-$begin)/(24*3600);

    用PHP打印出前一天的时间,打印格式是2007年5月10日22:21:21

    Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));

    在PHP中error_reporting这个函数有什么作用?设置PHP 的报错级别并返回当前级别。

    请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。

    常见的排序算法: 冒泡排序法、快速排序法、简单选择排序法、堆排序法、直接插入排序法、希尔排序法、合并排序法。

    冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。

    // 冒泡排序法

    Function mysort($arr){

    For($i=0; $i<count($arr); $i++){

    For($j=0; $j<count($arr)-1; $j++){

    If($arr[$j] > $arr[$j+1]){

    $tmp=$arr[$j];

    $arr[$j]=$arr[$j+1];

    $arr[$j+1]=$tmp;

                }

            }

        }

    Return $arr;

    }

    $arr=array(3,2,1);

    print_r(mysort($arr));

    写出匹配URL的正则表达式.

    /^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?/

    请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。if(isset($_POST['action']) && $_POST['action']==’submitted’){ $email=$_POST['email']; if(!preg_match(“/^(?:w+.?)*w+@(?:w+.?)*w+$/”,$email)){ echo “电子邮件检测失败”; }else{ echo “电子邮件检测成功”; }}

    请写一个函数验证电子邮件的格式是否正确

    function checkemail($email){

    echo preg_match(‘/^[\w]+@[\w]+[\.]([\w]+)$/’,$email)?’email格式正确‘:’email格式不正确‘;

    }

    使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组

    //二分查找(数组里查找某个元素)

    function bin_sch($array, $low, $high, $k){

    if ($low <= $high){

    $mid = intval(($low+$high)/2);

    if ($array[$mid] == $k){

    return $mid;

    }elseif ($k < $array[$mid]){

    return bin_sch($array, $low, $mid-1, $k);

    }else{

    return bin_sch($array, $mid+1, $high, $k);

    }

    }

    return -1;

    }

    JS表单弹出对话框函数是?获得输入焦点函数是? (2分)弹出对话框: alert(),prompt(),confirm()获得输入焦点focus()

    JS的转向函数是?怎么引入一个外部JS文件?(2分) window.location.href,

    <script type="text/javascript" src="hello.js"></script>

    查询出年龄介于20岁到30岁之间的用户

    Select * from user where age>20 and age<30

    写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

    function my_scandir($dir){

         $files = array();

         if ( $handle = opendir($dir) ){

             while ( ($file = readdir($handle)) !== false ) {

                 if ( $file != ".." && $file != "." ) {

                     if ( is_dir($dir . "/" . $file) ) {

                         $files[$file] = scandir($dir . "/" . $file);

                     }else {

                         $files[] = $file;

                     }

                 }

             }

             closedir($handle);

             return $files;

         }

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

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

    答案1:

    function getExt($url){

    $arr = parse_url($url);

    $file = basename($arr['path']);

    $ext = explode(“.”,$file);

    return $ext[1];

    }

    答案2:

    function getExt($url) {

    $url = basename($url);

    $pos1 = strpos($url,”.”);

    $pos2 = strpos($url,”?”);

    if(strstr($url,”?”)){

    Return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);

    } else {

    return substr($url,$pos1);

    }

    }

    把John 新增到 users 阵列?

    $users[] = ‘john’;   array_push($users,‘john’);

    从表login中选出name字段包含admin的前10条结果所有信息的sql语句

    Select *from login where name like '%admin%' limit 0,10;

    写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

    使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)  表名User  Name Tel Content Date  张三13333663366 大专毕业 2006-10-11  张三13612312331 本科毕业 2006-10-15  张四021-55665566 中专毕业 2006-10-15  请根据上面的题目完成代码: $mysql_db=mysql_connect("local","root","pass");

      @mysql_select_db("DB",$mysql_db);

        $result = mysql_query("SELECT * FROM `user` WHERE name='张三'");

        while($rs = mysql_fetch_array($result)){

          echo $rs["tel"].$rs["content"].$rs["date"];

    }

    Pdo

    Try{

    $dsn = "mysql:host=localhost;dbname=user";

    $pdo = new PDO($dsn,'root','123456');

    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    $pdo->query('set names utf8');

    $sql = "SELECT * FROM user WHERE name='张三'";

    $result = $pdo->query($sql);

    Foreach($result as $v){

    Echo $v['tel'].$v['content'].$v['date'];

    }

    }catch(PDOException $e){

    Echo $e->getCode().':'.$e->getMessage();

    }

    Mysqli写法:

    $mysqli = new mysqli('localhost','root','123456','user');

    If(mysqli_connect_errno()){

    Die('连接数据库失败,'.mysqli_connect_error());

    }

    $mysqli->set_charset('utf8');

    $result = $mysqli->query("SELECT * FROM user WHERE name='张三'");

    If($result && $result->affected_row()){

    While($row = $result->fetch_object()){

    Echo $row->tel.$row->content.$row->date;

    }

    }

    写出以下程序的输出结果(1分)  <?php

    $b=201;  $c=40; $a=$b>$c?4:5;  echo $a;  ?>答:4

    检测一个变量是否有设置的函数是否?是否为空的函数是?(2分) isset($str),empty($str);

    编写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库?

    假设现在有数据库:test表:mess字段:id,name,message

    [if !supportLists]1、[endif]html页面,填写留言:

    <form  method="post" action="post.php">

    留言者:<input type="text" name="name" />

    留言内容:<input type="text" name="message" />

    <input type="submit" value="提交" />

    </form>

    [if !supportLists]2、[endif]post.php页面,处理留言:

    $name = $_POST['name'];

    $message = $_POST['message'];

    Try{

    $dsn = ''mysql:host=localhost;dbname=test;

    $pdo = new PDO($dsn,'root','112233');

    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    $pdo->query('set names utf8');

    $sql = "insert into test(name,message) values('$name','$message')";

    $result = $pdo->exec($sql);

    If($result){

    Echo ‘留言成功’;

    }else{

    Echo '留言失败';

    }

    }catch(PDOException $e){

    Echo $e->getCode().' : '.$e->getMessage();

    }

    请列出3PHP中的预定义全局变量

    1、$_SESSION

    2、$_COOKIE

    3、$_SERVER

    4、$_GET

    5、$_POST

    写一个函数实现字符串翻转

    1、Strrev()

    2、自己写:

    Function str($a){

    $len=strlen($a);

    $b=”";

    For($i=$len-1;$i>=0;$i–){

    $b.=$a[$i];

    }

    Return $b;

    }

    $sum=0;        for($i=0;$i<=1000;$i++){          if($i%3==0){              $sum+=$i;          }          }        echo $sum;

    相关文章

      网友评论

          本文标题:PHP面试题附答案(实战经验)

          本文链接:https://www.haomeiwen.com/subject/fbfkphtx.html