PHP面试题

PHP面试题

1、用PHP打印出前一天的时间,格式是2006-5-10 22:21:21

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
//echo date('Y-m-d H:i:s',time()-60*60*24
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo date ( " Y:m:d H:i:s " , strtotime ( " -1 day " ));
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

2、echo(),print(),print_r()的区别

echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象

3、能够使HTML和PHP分离开使用的模板

so much,其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant这里有个模板引擎列表:http://www.sitepoint.com/forums/showthread.php?t=123769

4.如何实现PHP、JSP交互?

题目有点含糊不清,SOAP,XML_RPC,Socket function,CURL都可以实现这些,如果是考PHP和Java的整合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答),例如$foo = new Java('java.lang.System');
5.使用哪些工具进行版本控制?
CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端

6.如何实现字符串翻转?

 

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
PHP面试题 - 猪头亮 - 我们从一个苹果开始
function reverse( $var )
PHP面试题 - 猪头亮 - 我们从一个苹果开始{
PHP面试题 - 猪头亮 - 我们从一个苹果开始    
$res = "" ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始    
for ( $i = 0 , $j = strlen ( $var ); $i < $j ; $i ++ )
PHP面试题 - 猪头亮 - 我们从一个苹果开始     {
PHP面试题 - 猪头亮 - 我们从一个苹果开始        
$res = $var [ $i ] . $res ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始     }
PHP面试题 - 猪头亮 - 我们从一个苹果开始    
return $res ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始}
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$tmpvar = " wofang " ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$res = reverse( $tmpvar );
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo $res ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

 

7、优化MYSQL数据库的方法。

(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然后msql_num_rows.
只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)
(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

8、谈谈事务处理

A给B的账户转账50美元的例子

9、apache+mysql+php实现最大负载的方法

见7

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

mb_substr()

11.

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$empty = '' ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$null = NULL ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$bool = FALSE ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$notSet ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$array = array ();
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 以下是问题
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$a = " hello " ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$b = & $a ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
unset ( $b );
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$b = " world " ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 答案为:hello
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo $a ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

12.

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$empty = '' ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$null = NULL ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$bool = FALSE ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$notSet ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$array = array ();
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 以下是问题
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$a = 1 ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$x = & $a ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$b = $a ++ ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 以下为答案:1
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo $b ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

13

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$empty = '' ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$null = NULL ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$bool = FALSE ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$notSet ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$array = array ();
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 以下是问题
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$x = empty ( $array );
PHP面试题 - 猪头亮 - 我们从一个苹果开始
PHP面试题 - 猪头亮 - 我们从一个苹果开始
// 以下为答案:true
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo $x ? " true " : " false " ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

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

 

PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
PHP面试题 - 猪头亮 - 我们从一个苹果开始
$ip = gethostbyname ( "" );
PHP面试题 - 猪头亮 - 我们从一个苹果开始
echo $ip ;
PHP面试题 - 猪头亮 - 我们从一个苹果开始
?>

 

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中

php
// 本页地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER [ ' PHP_SELF ' ] . "
" ;
// 链接到当前页面的前一页面的 URL 地址:
echo $_SERVER [ ' HTTP_REFERER ' ] . "
" ;

// 其它的见参考手册:语言参考》变量》预定义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php

echo $_SERVER [ " SCRIPT_FILENAME " ] . "
" ;
// 正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER [ " REMOTE_ADDR " ] . "
" ;
// 查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER [ " QUERY_STRING " ] . "
" ;
// 当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER [ " DOCUMENT_ROOT " ] . "
" ;
?>

2.执行程序段将输出__。

php
// 参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo 8 % ( - 2 ) . "
" ;
// 取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo (( - 8 ) % 3 ) . "
" ;
// 输出2
echo ( 8 % ( - 3 )) . "
" ;
?>

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

答:401表示未授权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]

4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。

答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings

5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):

php
$script = " 以下内容不显示: " ;
echo preg_replace ( " /].*?>.*?/si " , " 替换内容 " , $script );
?>

6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装Microsoft Windows 下的 Apache 2.0.x

7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。
答:在如何处理失败时,警告 致命错误;require_once()/include_once()

8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_reference

9.SQL 中LEFT JOIN的含义是__,如果 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____.

答:自然左外连接

create database phpinterview;
use phpinterview
create table tbl_user
(
    ID                             
int                              not null ,
    name                           
varchar ( 50 )                     not null ,
   
primary key (ID)
);
create table tbl_score
(
    ID                             
int                              not null ,
    score                          
dec ( 6 , 2 )                        not null ,
    subject                        
varchar ( 20 )                     not null
);

insert into tbl_user (ID, name) values ( 1 , ' beimu ' );
insert into tbl_user (ID, name) values ( 2 , ' aihui ' );
insert into tbl_score (ID, score, subject) values ( 1 , 90 , ' 语文 ' );
insert into tbl_score (ID, score, subject) values ( 1 , 80 , ' 数学 ' );
insert into tbl_score (ID, score, subject) values ( 2 , 86 , ' 数学 ' );
insert into tbl_score (ID, score, subject) values ( 2 , 96 , ' 语文 ' );

select A.id, sum (B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID = B.ID
group by A.id

10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除";"

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

php
function my_scandir( $dir )
{
    
$files = array ();
    
if ( is_dir ( $dir ))
     {

 

1.以下哪一句不會把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語法錯誤。

2.sort()、assort()、和 ksort() 有什麼分別?它們分別在什麼情況下使用?

sort()
根據陣列中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。
assort()
PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤
asort()
與 sort() 一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯想陣列排序。
ksort()
根據陣列中索引鍵的值,以英文字母順序排序,特別適合用於希望把索引鍵排序的聯想陣列。

3.以下的代碼會產生什麼?為什麼?

$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;

由於函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

4. reference 跟一個正規的變量有什麼分別?如何 pass by reference?在什麼情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個變量的值時,整個應用都見到這個變量的新值。
一個正規變量傳送給函式的是它的值,當函式改變這個變量的值時,只有這個函式才見到新值,應用的其他部分仍然見到舊值。

$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 傳送參數

以 reference 傳送參數給函式,可以使函式改變了的變量,即使在函式結束後仍然保留新值。

5.些函式可以用來在現正執行的腳本中插入函式庫?
對這道題目不同的理解會有不同的答案,我的第一個想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但細心再想,「函式庫」也應該包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起「函式庫」的時候,別忘記這兩個函式。

6.foo() 與 @foo() 有什麼分別?
foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。
@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。
很多應用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤訊息,我認為這是很嚴重的失誤,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。

7.你如何替 PHP 的應用程式偵錯?
我並不常這樣做,我曾經試過很多不同的偵錯工具,在 Linux 系統中設定這些工具一點也不容易。不過以下我會介紹一個近來頗受注目的偵錯工具。
PHP - Advanced PHP Debugger 或稱 PHP - APD,第一步是執行以下的指令安裝:

pear install apd安裝後在你的腳本的開頭位置加入以下的語句開始進行偵錯:

apd_set_pprof_trace();執行完畢,打開以下檔案來查閱執行日誌:
apd.dumpdir
你也可以使用 pprofp 來格式化日誌。
詳細的資料可以參閱 http://us.php.net/manual/en/ref.apd.php

8.「===」是什麼?試舉一個「==」是真但「===」是假的例子。
「===」是給既可以送回布爾值「假」,也可以送回一個不是布爾值但卻可以賦與「假」值的函式,strpos() 和 strrpos() 便是其中兩個例子。
問題的第二部份有點困難,想一個「==」是假,但是「===」是真的例子卻很容易,相反的例子卻很少。但我終於找到以下的例子:

if (strpos("abc", "a") == true){    // 這部分永不會被執行,因為 "a" 的位置是 0,換算成布爾值「假」}if (strpos("abc", "a") === true){    // 這部份會被執行,因為「===」保證函式 strpos() 的送回值不會換算成布爾值.}

9.你會如何定義一個沒有成員函式或特性的類別 myclass?

class myclass{}

10.你如何產生一個 myclass 的物件?

$obj = new myclass();

11.在一個類別內如何存取這個類別的特性及變改它的值?
使用語句:$this->propertyName,例如:

class myclass{ private $propertyName; public function __construct() {   $this->propertyName = "value"; }}

12.include 和 include_once 有什麼分別?require 又如何?
三者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是否核准,這個檔案可以從系統內部或外部取得。但他們之間也有微細的分別:
include():這個函式容許你在腳本中把同一個檔案插入多次,若果檔案不存在,它會發出系統警告並繼續執行腳本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執行期間,有關檔案只會被插入一次。
require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令腳本中止執行

13.以下哪一個函式可以把瀏覽器轉向到另一個頁面?
redir()
這不是一個 PHP 函式,會引致執行錯誤。
header()
這個是正確答案,header() 用來插入卷頭資料,可以用來使瀏覽器轉向到另一個頁面,例如:
header("Location:
http://www.search-this.com/");
location()
這不是一個 PHP 函式,會引致執行錯誤。
redirect()
這不是一個 PHP 函式,會引致執行錯誤。


14.以下哪一個函式可以用來開啟檔案以便讀/寫?
fget()
這不是一個 PHP 函式,會引致執行錯誤。
file_open()
這不是一個 PHP 函式,會引致執行錯誤。
fopen()
這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱 php.net。
open_file()
這不是一個 PHP 函式,會引致執行錯誤。
15.mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?
mysql_fetch_row() 把數據庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數據庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的數據庫查詢送回「first_name」、「last_name」、「email」三個欄位,陣列的索引便是「first_name」、「last_name」和「email」。mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
16.下面的代碼用來做什麼?請解釋。

$date='08/26/2003';print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","//2///1///3",$date);

這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:

// 對應一個或更多 0-9,後面緊隨一個斜號$regExpression = "([0-9]+)/";// 應一個或更多 0-9,後面緊隨另一個斜號$regExpression .= "([0-9]+)/";// 再次對應一個或更多 0-9$regExpression .= "([0-9]+)";至於 //2///1///3 則是用來對應括號,第一個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。

17.給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去?
首先,PHP 有內建函式 strip_tags() 除去 HTML 標籤,為何要自行編寫正規表達式?好了,便當作是面試的一道考題吧,我會這樣回答:

$stringOfText = "

This is a test

";$expression = "/<(.*?)>(.*?)/";echo preg_replace($expression, "//2", $stringOfText);// 有人說也可以使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";echo preg_replace($expression, "", $stringOfText);

18.PHP 和 Perl 分辨陣列和散列表的方法有什麼差異?
這正是為何我老是告訴別人選擇適當的編程語言,若果你只用一種語言的話你怎麼能回答這道問題?這道問題很簡單,Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。
至於 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,仍是使用 $,例如 $myHash。
19.你如何利用 PHP 解決 HTTP 的無狀態本質?
最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁的開始加上 session_start(),然後利用 $_SESSION 散列表來儲存 session 變量。至於 cookie 你只需記著一個原則:在輸出任何文字之前調用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個不那麼可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。
20.GD 函式庫用來做什麼?
這個可能是我最喜歡的函式庫,自從 PHP 4.3.0 版本後 GD 便內建在 PHP 系統中。這個函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是製作所圖檔。GD 以外的另一個選擇是 ImageMagick,但這個函式庫並不內建於 PHP 之中,必須由系統管理員安裝在伺服器上。
21.試寫出幾個輸出一段 HTML 代碼的方法。
嗯,你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:

echo "My string $variable";你也可以使用這種方法:

echo << HTML tags in here as well. The END; remarks must be on a line of its own, and can't contain any extra white space.END;

22.PHP 比 Perl 好嗎?請討論。
我們不要為一個簡單的問題引發一場舌戰,正如我經常說的:「為工作選擇適合的語言,不要把工作遷就語言。」我個人認為 Perl 十分適合用作命令行工具,雖然它在網頁應用上也有不錯的表現,但是它的真正實力在命令行上才能充分發揮。同樣地,PHP 雖然可以在控制台的環境中使用,但是個人認為它在網頁應用上有更好的表現,PHP 有大量專門為網頁應用而設計的函式,Perl 則似乎以命令行為設計之本。
個人來說兩種語言我都喜歡,在大學期間我經常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家裡我花不少時間操練 PHP、Perl、Ruby(現正學習)和 Java,保持我的技能知識在最新狀態。很多人問我 C 和 C++ 怎麼樣,它們是否仍有機會在我的應用中佔一席位,我的答案基本上是「否」,我近來的工作主要集中在網頁開發,雖然 C 和 C++ 也可以用來寫網頁,但它們到底不是為這種工作而設計的,「為工作選擇適合的語言」,若果我需要編寫一個控制台應用,用來展示 bubble sort、quick sort 和 merge sort 的效能比較,我一定會使用 C / C++。若果我需要編寫一個相片簿系統,我會使用 PHP 或者 C#(我認為製作用戶介面方面 .NET 語言比網頁更加)。

  • 参考

    1.http://blog.csdn.net/jerryfleming/archive/2007/01/17/1485528.aspx

    2.http://blog.csdn.net/phpme/archive/2006/06/23/826204.aspx

    3.http://www.jian-li.com.cn/shiti/20061125/9125.Html

    4.http://www.hkpug.net/node/211

    5.http://club.phpe.net/index.php?act=ST&f=10&t=7768

    6.http://khaki.bloghome.cn/posts/126072.html

  •  

    1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
       答: 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。
    2 在PHP中error_reporting这个函数有什么作用?
       答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.
    3 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。
    答:

    php
    if ( isset ( $_POST [ ' action ' ]) && $_POST [ ' action ' ] == ' submitted ' )
    {
        
    $email = $_POST [ ' email ' ];
        
    if ( ! preg_match ( " /^(?:w+.?)*w+@(?:w+.?)*w+$/ " , $email ))
         {
            
    echo " 电子邮件检测失败 " ;
         }
        
    else
         {
            
    echo " 电子邮件检测成功 " ;
         }
    }
    else
    {
    ?>
    < html >
    < head >< title > EMAIL检测 title >
    < script type = " text/javascript " >
        
    function checkEmail(sText)
         {
            
    var reg =/^ ( ?: w + .? ) * w + @( ?: w + .? ) * w + $ / ;
            
    var email = document . getElementById(sText) . value;
            
    if ( ! reg . test(email))
             {
                 alert(
    " 电子邮件检测失败 " );
             }
            
    else
             {
                 alert(
    " 电子邮件格式正确 " );
             }
         }
    script >
    head >
    < body >
    < form action = " " method = " POST " >
    电子邮件:
    < input type = " text " id = " email " name = " email " />< br />
    < input type = " hidden " name = " action " value = " submitted " />
    < input type = " button " name = " button " value = " 客户端检测 " onclick = " checkEmail('email') " />
    < input type = " submit " name = " submit " value = " 服务器端检测 " />
    form >
    body >
    html >
    php
    }
    ?>

    4 简述如何得到当前执行脚本路径,包括所得到参数。

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    echo " http:// " . $_SERVER [ ' SERVER_NAME ' ] . $_SERVER [ ' PHP_SELF ' ] . " ? " . $_SERVER [ ' QUERY_STRING ' ];
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    // echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    ?>

    5 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)

     

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 php
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    function BubbleSort( & $arr )
    PHP面试题 - 猪头亮 - 我们从一个苹果开始{
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    
    $cnt = count ( $arr );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    
    $flag = 1 ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    
    for ( $i = 0 ; $i < $cnt ; $i ++ )
    PHP面试题 - 猪头亮 - 我们从一个苹果开始     {
    PHP面试题 - 猪头亮 - 我们从一个苹果开始        
    if ( $flag == 0 )
    PHP面试题 - 猪头亮 - 我们从一个苹果开始         {
    PHP面试题 - 猪头亮 - 我们从一个苹果开始            
    return ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始         }
    PHP面试题 - 猪头亮 - 我们从一个苹果开始        
    $flag = 0 ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始        
    for ( $j = 0 ; $j < $cnt - $i - 1 ; $j ++ )
    PHP面试题 - 猪头亮 - 我们从一个苹果开始         {
    PHP面试题 - 猪头亮 - 我们从一个苹果开始            
    if ( $arr [ $j ] > $arr [ $j + 1 ])
    PHP面试题 - 猪头亮 - 我们从一个苹果开始             {
    PHP面试题 - 猪头亮 - 我们从一个苹果开始                
    $tmp = $arr [ $j ];
    PHP面试题 - 猪头亮 - 我们从一个苹果开始                
    $arr [ $j ] = $arr [ $j + 1 ];
    PHP面试题 - 猪头亮 - 我们从一个苹果开始                
    $arr [ $j + 1 ] = $tmp ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始                
    $flag = 1 ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始             }
    PHP面试题 - 猪头亮 - 我们从一个苹果开始         }
    PHP面试题 - 猪头亮 - 我们从一个苹果开始     }
    PHP面试题 - 猪头亮 - 我们从一个苹果开始}
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    $test = array ( 1 , 3 , 6 , 8 , 2 , 7 );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始BubbleSort(
    $test );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    var_dump ( $test );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    ?>

     

    6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
       答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

    Mysql部分
    1 创建poll表,用于记录单选投票用户的数据
    字段包括 id[ Autoincreace ] , ip , time , iid(用户选则的选项,int型)
    写出create上述table的完整sql语句

    drop table if exists poll;

    /* ============================================================== */
    /* Table: poll                                                   */
    /* ============================================================== */
    create table poll
    (
        id                             
    int unsigned                    not null auto_increment,
        ip                             
    varchar ( 15 )                     not null ,
        time                           
    datetime                         not null ,
        iid                            
    int                              not null ,
       
    primary key (id)
    )

    2    写出将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 insert into poll (ip,time,iid) values ( ' 127.0.0.1 ' ,now(), 2 );

    3   写出满足下边条件的SQL语句
    PHP面试题 - 猪头亮 - 我们从一个苹果开始item表的结构为 id(就是poll表中的iid) , descp(用户选择的选项的文字)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始请查询并返回10条记录
    ,包括ip和用户选择的选项的文字

    4    现在因为投票人数太多,网站时常出现too many connection的错误,请提供解决方案
    方法一:加大MySql的最大连接数
       mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些,编辑my.ini
       修改 max_connections=1000
    方法二,不用mysql数据库,改为直接写文件,详细方法参照问题5
    若非要用 mysql,还可
    方法三:由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量
    5    在成功解决连接数的问题后,发现程序运行缓慢,经查发现是mysql并发太多,表被锁定的现象严重,请提供解决方案
    对于访问量大的,本来就不推荐使用数据库,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.txt,2.txt…100.txt,每有用户投票的时候,随机往其中的一个文件中写入投票信息。统计的时候,再对所有文本文件中的数据进行分析。必要的时候,再导入数据库

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 drop table if exists item;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /* Table: item                                                  */
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    create table item
    PHP面试题 - 猪头亮 - 我们从一个苹果开始(
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    id                             
    int                              not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    descp                          
    varchar ( 200 )                    not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始   
    primary key (id)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始);
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    select A.ip,b.descp
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    from poll A,item B
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    where A.id = B.id
    PHP面试题 - 猪头亮 - 我们从一个苹果开始limit
    10

     

    6    因为用户实在太多,所以又分配给你两台服务器,你会如何来安排这3台服务器?
    对于服务器分配,其实有好几种方案(建议采用LINUX主机),先列出一个解决方案。
    1.     考虑到电信,网通(南北差异)互访问速度慢的问题,可以让电信的用户走电信的线,网通的走网通的线。大致可以这样分配,国内南方用户(电信用户)拥有一台 服务器A;北方用户(网通用户)拥有一台服务器B。国外的用户也可以考虑给一台服务器C。用户访问的时候,首先访问的是针对国外的服务器,那台机器是电信 网通的用户访问速度都差不多的(可以考虑就租用香港或是什么地方的),经过服务器C判断后直接跳到相应的服务器。统计时三台机器的数据合起来
    7    现在开始要求同一ip不能重复投票 ,请指出如何对数据表进行相应的修改
    ALTER TABLE `phpinterview`.`poll` ADD unique INDEX `IX_poll_ip`(`ip`);

    8.    原有数据已经有很多重复ip的数据了,所以我们把它导出为一个txt,格式和上边的poll一致,用TAB键间隔,请写一段程序,删除ip有重复的记录,并统计每个投票选项的投票数

    php
    // 读取文本并放入数组
    $apoll = file ( " c:/1.txt " );
    // 对每一行数据进行分割,从而获取了一个二维数组
    for ( $i = 0 ; $i < count ( $apoll ); $i ++ )
    {
        
    $poll [ $i ] = split ( "      " , $apoll [ $i ]);
    }

    // 获取IP、出现的次数数据
    $arrIP = array ();
    for ( $i = 0 ; $i < count ( $poll ); $i ++ )
    {
        
    $arrIP [ $poll [ $i ][ 1 ]] = isset ( $arrIP [ $poll [ $i ][ 1 ]]) ? $arrIP [ $poll [ $i ][ 1 ]] + 1 : 1 ;
    }

    // 获取选项、投票个数
    $arrRes = array ();
    for ( $i = 0 ; $i < count ( $poll ); $i ++ )
    {
        
    if ( $arrIP [ $poll [ $i ][ 1 ]] == 1 )
         {
            
    $arrRes [ $poll [ $i ][ 3 ]] = isset ( $arrRes [ $poll [ $i ][ 3 ]]) ? $arrRes [ $poll [ $i ][ 3 ]] + 1 : 1 ;
         }
    }
    var_dump ( $arrRes );
    ?>

    mysql5.0测试版:

     

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 PHP面试题 - 猪头亮 - 我们从一个苹果开始 /**/ /*========================得到测试数据c: .txt=========*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    SELECT *
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    into outfile ' c: .txt '
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    FROM `testok`;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*========================载入临时表=========*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    create TABLE phpinterview.testok(id int ,ip varchar ( 15 ),time datetime ,iid int );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    LOAD DATA INFILE ' c: .txt '
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    into table testok;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*=========================删除ip有重复的记录=========*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    delete A from testok A,( select ip from testok B group by ip having count ( * ) > 1 ) B
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    where A.ip = B.ip
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*================统计每个投票选项的投票数==============================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    select iid, count ( * ) from testok B group by B.iid

     

    1、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来
    表名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);
    drop table if exists user;

    /*==============================================================*/
    /* Table: user                                                  */
    /*==============================================================*/
    create table user
    (
        `Name`                           varchar(20),
        Tel                            varchar(16),
        Content                        varchar(255),
        `Date`                           date
    )
    insert into user(name,tel,content,`date`) values('张三','13333663366','大专毕业','2006-10-11');
    insert into user(name,tel,content,`date`) values('张三','13612312331','本科毕业','2006-10-15');
    insert into user(name,tel,content,`date`) values('张四','021-55665566','中专毕业','2006-10-1');

    select * from user where name='张三';

    header("content-type:text/html; charset=gbk");

    $mysql_db=mysql_connect("localhost","root","");
    @mysql_select_db("phpinterview",$mysql_db);
    echo "

    ";
    mysql_query("set names gbk");
    $result=mysql_query("select Name,Tel,Content,Date from user where Name='张三'") or die("错误:".mysql_error());
    while($row=mysql_fetch_array($result,MYSQL_BOTH))
    {
         echo "";
    }
    mysql_free_result($result);
    echo "
    ".$row["Name"]."".$row["Tel"]."".
         $row["Content"]."
    ".$row["Date"]."
    "
    ?>
    3、如何使用下面的类,并解释下面什么意思?
    class test{
    function Get_test($num){
    $num=md5(md5($num)."En");
    return $num;
    }
    }
    /**
    * 使用md5加密数据...
    *
    */
    class test{
         function Get_test($num){
             $num=md5(md5($num)."En");
             return $num;
         }
    }
    $a=new test();
    echo $a->Get_test("123");
    ?>
    4、用javascipt打印 “上海爱吉”

    JS打印




    5、写出 SQL语句的格式 : 插入 ,更新 ,删除
    select expression
    from tablename
    where condition
    group by columns asc
    with rollup
    order by column asc
    limit offset,rowcount;

    insert into tablename(columname) values(exp);
    update tablename set columnname=exp where condition order by column limit rowcount;
    delete from tablename where condition order by column limit rowcount;

    一、PHP/MySQL编程
    1) 某内容管理系统中,表message有如下字段
    id 文章id
    title 文章标题
    content 文章内容
    category_id 文章分类id
    hits 点击量
    创建上表,写出MySQL语句

    2)同样上述内容管理系统:表comment记录用户回复内容,字段如下
    comment_id 回复id
    id 文章id,关联message表中的id
    comment_content 回复内容
    现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

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

     

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

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

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 drop table if exists Comment;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    drop table if exists category;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    drop table if exists message;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /* Table: Comment                                               */
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    create table Comment
    PHP面试题 - 猪头亮 - 我们从一个苹果开始(
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    comment_id                     
    int unsigned                    not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    id                             
    int unsigned                    not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    comment_content                
    text ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始   
    primary key (comment_id)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始type
    = InnoDB;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /* Table: category                                              */
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    create table category
    PHP面试题 - 猪头亮 - 我们从一个苹果开始(
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    category_id                    
    int                              not null AUTO_INCREMENT,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    category_name                  
    varchar ( 40 )                     not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始   
    primary key (category_id),
    PHP面试题 - 猪头亮 - 我们从一个苹果开始   
    key AK_pk_category_id (category_id)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始type
    = InnoDB;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /* Table: message                                               */
    PHP面试题 - 猪头亮 - 我们从一个苹果开始PHP面试题 - 猪头亮 - 我们从一个苹果开始
    /**/ /*==============================================================*/
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    create table message
    PHP面试题 - 猪头亮 - 我们从一个苹果开始(
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    id                             
    int                              not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    title                          
    varchar ( 120 )                    not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    content                        
    text                             not null ,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    category_id                    
    int unsigned,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    hit                            
    int unsigned,
    PHP面试题 - 猪头亮 - 我们从一个苹果开始   
    primary key (id)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始)
    PHP面试题 - 猪头亮 - 我们从一个苹果开始type
    = InnoDB;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    select A.id,A.title,A.hits,IFNULL(B.num, 0 )
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    from message A left join ( select id, count ( * ) as num from comment B group by id) B
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    on A.id = B.id
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    order by B.num desc ;

     

    PHP面试题 - 猪头亮 - 我们从一个苹果开始 < html >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    < head >< title > JS打印 title > head >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    < body >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    < form >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    < select id = " category " name = " category " >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    php
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    mysql_connect ( " localhost " , " root " , "" ) or die ( " db conn error: " . mysql_error ());
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    mysql_select_db ( " phpinterview " ) or die ( " db error " . mysql_error ());
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    $result = mysql_query ( " select category_id,category_name from category " );
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    while ( $row = mysql_fetch_array ( $result ))
    PHP面试题 - 猪头亮 - 我们从一个苹果开始{
    PHP面试题 - 猪头亮 - 我们从一个苹果开始    
    echo " " . $row [ " category_name " ] . " " ;
    PHP面试题 - 猪头亮 - 我们从一个苹果开始}
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    ?>
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    select >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    form >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    body >
    PHP面试题 - 猪头亮 - 我们从一个苹果开始
    html >

     

    1)内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
    直接通过php写入文件,或使用模板来替换标签
    2) 简单描述用户修改以发布内容的实现流程和基本思路
    更新内容,替换静态文件
    3) 写出以下程序的输出结果
    $b=201;
    $c=40;
    $a=$b>$c?4:5;
    echo $a;
    ?>
    4
    4) 写出以下程序的输出结果
    $str="cd";
    $$str="hotdog";
    $$str.="ok";
    echo $cd;
    ?>
    hotdogok
    5)有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来

    JS打印


    function GenerateMenu($id=0,$str="")
    {
         $result=mysql_query("select mainmenu,url,submenu from menu where mainmenu=$id");
         while($row=mysql_fetch_array($result))
         {
             echo $str.$row["url"]."
    ";
             GenerateMenu($row["submenu"],$str."--");
         }
         mysql_free_result($result);
    }

    $link=mysql_connect("localhost","root","");
    mysql_select_db("phpinterview");
    GenerateMenu();
    mysql_close($link)
    ?>


    6)- 给你三个数,写程序求出其最大值。
    $var1=1;
    $var2=7;
    $var3=8;
    $max=$var1>$var2?$var1:$var2;
    $max=$max>$var3?$max:$var3;
    echo $max;

    9)- 写出发贴数最多的十个人名字的SQL,利用下表:
       members(id,username,posts,pass,email)
    SELECT username,count(*) as num FROM `members` group by username desc order by count(*) desc limit 10
    10)如何通过javascript判断一个窗口是i已经被屏蔽。

    11)-写出session的运行机制
    用户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE[’PHPSESSID’];(PHPSESSID可用session_name()函数来修改)
    用户A接着访问,这个session id($_COOKIE[’PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。
    在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。

    13)-防止SQL注射漏洞一般用__addslashes___函数。
    14)-查询在线人数,并能处理异常掉线的SQL
    参考:http://topic.csdn.net/t/20001216/09/49126.html

    二. 数据库设计题:
    请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借还书信息;数据表的个数不超过6个;请画表格描述表结构(需要说明每个字段的字段名、字段类型、字段含义描述);

    在数据库设计中应:
    1. 保证每个用户的唯一性;
    2. 保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性;
    3. 借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限;
    4. 保证借书信息表与用户表、图书信息表之间的参照完整性;
    5. 限制每个用户最大可借书的本数
    6. 若有新用户注册或新书入库,保证自动生成其唯一性标识
    7. 为以下的一系列报表需求提供支持:
    (无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条SQL语句实现)
    a) 日统计报表:当日借书本数、当日还书本数报表;
    b) 实时报表:
    i. 当前每种书的借出本数、可借本数;
    ii. 当前系统中所有超期图书、用户的列表及其超期天数
    iii. 当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现此需求的SQL语句:

    数据库应用:
    请撰写一系列的SQL语句,分别描述完整的借书行为与还书行为;并保证这一系列的SQL语句的执行完整性
    下题是测验能力之最重要测试,如不能完成我们将无法给出评判结果!所以请写出详细的回答,并保证答案是可以执行的程序。在两日内将结果通过电子邮件寄到[email protected]邮箱

    结合第二题中你的设计,用一种数据库实现,要求使用三层结构或者多层结构,要求采用面向对象的思想进行编程,有可能的话,设计一套模板机制来实现之。

    功能:列出当前借出图书的情况 ,按日期排列

    编号 用户姓名 书名 书的编号 借出日期
    1. 张进 大染坊 12576587 2004-9-1
    2. 刘兴 西游记 32131098 2004-9-2

    你可能感兴趣的:(PHP)