日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

一份超级全面的PHP面试题

發布時間:2025/5/22 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一份超级全面的PHP面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,用PHP打印出前一天的時間,格式是2006-5-10 22:21:21
echo date("Y:m:d H:i:s",strtotime("-1 day"));
?>
2,echo(),print(),print_r()的區別
echo是語言結構,無返回值;print功能和echo基本相同,不同的是print是函數,有返回值;print_r是遞歸打印,用于輸出數組對象
3,能夠使HTML和PHP分離開使用的模板
smarty, PHPLib, FastTemplate, Savant,MiniTemplator,TagTemplate
4,如何實現PHP、JSP交互
$foo = new Java(’java.lang.System’);
5,使用哪些工具進行版本控制
CVS或SVN
CVS Server on Apache作服務端,WinCVS作客戶端
Subversion on Apache/DAV 做服務端,TortoiseSVN做客戶端
6,如何實現字符串翻轉
$str=strrev("Wilson Peng");
echo $str;
?>
7,優化MYSQL數據庫的方法
(1)選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設置NOT NULL,例如’省份,性別’,最好設置為ENUM
(2)使用連接(JOIN)來代替子查詢:
(3)使用聯合(UNION)來代替手動創建的臨時表
(4)事務處理:
保證數據完整性,例如添加和修改同時,兩者成立則都執行,一者失敗都失敗
mysql_query(”BEGIN”);
mysql_query(”INSERT INTO customerinfo (name) VALUES (’$name1′)”;
mysql_query(”SELECT * FROM `orderinfo` where customerid=”.$id”);
mysql_query(”COMMIT”);
(5)鎖定表,優化事務處理:
我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。包含有 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”);
(6)使用外鍵,優化鎖定表
(7)建立索引:
(8)優化查詢語句
最好在相同字段進行比較操作,在建立好的索引字段上盡量減少函數操作
SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
SELECT * FROM order WHERE addtime/7<24;(慢)
SELECT * FROM order WHERE addtime<24*7;(快)
SELECT * FROM order WHERE title like "%good%";
SELECT * FROM order WHERE title>=”good” and name<"good";
8,實現中文字串截取無亂碼的方法
$str = '我是一串比較長的中';
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>
mb_substr:我是一串比較
mb_strcut:我是
mb_substr是按字來切分字符,而mb_strcut是按字節來切分字符,但是都不會產生半個字符的現象
9,用PHP寫出顯示客戶端IP與服務器IP的代碼
echo $_SERVER[‘REMOTE_ADDR’];
getenv('REMOTE_ADDR');
//客戶端IP
$ip=gethostbyname ("www.murray.cn");
//服務器IP
echo $ip;
?>
10,在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量中;而鏈接到當前頁面的URL記錄在預定義變量中
echo $_SERVER['PHP_SELF'];
echo $_SERVER["HTTP_REFERER"];
11,
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是問題
$a = "hello";
$b = &$a;
unset($b);
//答案為:hello
echo $a;
$b = "world";
//答案為:hello
echo $a;
//以下是問題
$a = 1;
$x = &$a;
$b = $a++;
//答案為:1
echo $b;
//以下是問題
$x = empty($array);
//答案為:1
echo $x;
//答案為:true
echo $x?"true":"false";
?>
12,表單中 get與post提交方法的區別
get是發送請求HTTP協議通過url參數傳遞進行接收,而post是實體數據,可以通過表單提交大量信息
13,session與cookie的區別
session:儲存用戶訪問的全局唯一變量,存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的存放
cookie:用來存儲連續訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。
兩者都可通過時間來設置時間長短
14,數據庫中的事務是什么
事務(transaction)是作為一個單元的一組有序的數據庫操作。如果組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,事務則提交,其修改將作用于所有其他數據庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消
15,MYSQL取得當前時間的函數是 now()
格式化日期的函數是 date()
16,語句include和require的區別是什么
require->require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執行require
include->include有返回值,而require沒有(可能因為如此require的速度比include快)
17,如何修改SESSION的生存時間
將php.ini中的session.gc_maxlifetime設置為9999重啟apache
或:$savePath = “./session_save_dir/”;
$lifeTime = 小時 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
18,有一個網頁地址,比如http://www.murray.cn/,如何得到它的內容
$readcontents = fopen(”http://www.murray.cn/”, “rb”);
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;

echo file_get_contents(”http://www.murray.cn/”);
19,在HTTP 1.0中,狀態碼401的含義是 未被授權
如果返回“找不到文件”的提示,則可用 header 函數,其語句為 header(”Location:www.murray.cn”);
20,在PHP中,heredoc是一種特殊的字符串,它的結束標志必須
heredoc的語法是用”<<<"加上自己定義成對的標簽,在標簽范圍內的文字視為一個字符串
例子:
$str = << my name is Jiang Qihui!
murray;
21,請說明php中傳值與傳引用的區別。什么時候傳值什么時候傳引用?
按值傳遞:函數范圍內對值的任何改變在函數外部都會被忽略
按引用傳遞:函數范圍內對值的任何改變在函數外部也能反映出這些修改
優缺點:按值傳遞時,php必須復制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。
按引用傳遞則不需要復制值,對于性能提高很有好處。
22,在PHP中error_reporting這個函數有什么作用
設置錯誤級別與錯誤信息回報
23,請寫一個函數驗證電子郵件的格式是否正確
$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);
24,如何得到當前執行腳本路徑,包括所得到參數
$script_name = basename(__file__);
print_r($script_name);
25,JS表單彈出對話框函數是
alert(),prompt(),confirm();
獲得輸入焦點函數是focus();
26,如何聲明一個名為”myclass”的沒有方法和屬性的類
class myclass{ }
如何實例化一個名為”myclass”的對象
new myclass()
如何訪問和設置一個類的屬性
$object = new myclass();
$newstr = $object->test;
$object->test = “info”;
27,可以打開一個文件,以對文件進行讀和寫操作: fopen()
28,$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
//輸出:10
29,寫一個函數,盡可能高效的,從一個標準 url 里取出文件的擴展名
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(”.”,$file);
return $ext[1];
}
30,PHP5權限控制修飾符
public(公共),private(私用),protected(繼承)

===================================================
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=”<?php echo $_SERVER['PHP_SELF'] ?>” method=”POST”>
電子郵件:<input type=”text” id=”email” name=”email”
/><br />
<input type=”hidden” name=”action” value=”submitted”
/>
<input type=”button” name=”button” value=”客戶端檢測” οnclick=”checkEmail(‘email’)”
/>
<input type=”submit” name=”submit” value=”服務器端檢測”
/>
</form>
</body>
</html>
<?php
}
?>

4 簡述如何得到當前執行腳本路徑,包括所得到參數。
<?php
echo
“http://”.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].”?”.$_SERVER['QUERY_STRING'];
//echo “http://”.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>

5 有一個一維數組,里面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。要求執行效率高。并說明如何改善執行效率。(該函數必須自己實現,不能使用php函數)

<?php
function BubbleSort(&$arr)
{
$cnt=count($arr);
$flag=1;
for($i=0;$i<$cnt;$i++)
{
if($flag==0)
{
return;
}
$flag=0;
for($j=0;$j<$cnt-$i-1;$j++)
{
if($arr[$j]>$arr[$j+1])
{
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
$flag=1;
}
}
}
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);
?>

6 請舉例說明在你的開發過程中用什么方法來加快頁面的加載速度
答:要用到服務器資源時才打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器。使用代碼優化工具啦

=============================================

1. 寫出如下程序的輸出結果
<?
$str1 = null;
$str2 = false;
echo $str1==$str2 ? ‘相等’ : ‘不相等’;
//相等
$str3 = ”;
$str4 = 0;
echo $str3==$str4 ? ‘相等’ : ‘不相等’;
//相等
$str5 = 0;
$str6 = ’0′;
echo $str5===$str6 ? ‘相等’ : ‘不相等’;
//不相等
?>

2. 寫出如下程序的輸出結果
<?
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = ”;
$a5 = ’0′;
$a6 = ‘null’;
$a7 = array();
$a8 = array(array());

echo empty($a1) ? ‘true’ : ‘false’;//true
echo empty($a2) ? ‘true’ : ‘false’;//true
echo empty($a3) ? ‘true’ : ‘false’;//true
echo empty($a4) ? ‘true’ : ‘false’;//true
echo empty($a5) ? ‘true’ : ‘false’;//true
echo empty($a6) ? ‘true’ : ‘false’;//false
echo empty($a7) ? ‘true’ : ‘false’;//true
echo empty($a8) ? ‘true’ : ‘false’;//false
?>

3. 寫出如下程序的輸出結果
<?
$test = ‘aaaaaa’;
$abc = & $test;
unset($test);
echo $abc;//’aaaaaa’
?>

4. 寫出如下程序的輸出結果
<?$count = 5;
function get_count(){
static $count = 0;
return $count++;
}

echo $count;? //5
++$count;
echo get_count();//0
echo get_count();//1
?>

5. 寫出如下程序的輸出結果
<?
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();

echo $var1;?? //0
echo $var2;?? //2
?>

6. 寫出如下程序的輸出結果
<?
function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);

get_arr(&$arr1);
get_arr($arr2);

echo count($arr1);//1
echo count($arr2);//2
?>

=================================================

1. 用PHP打印出前一天的時間,打印格式是2007年5月10日 22:21:21
2. PHP代碼如下:
$a=”hello”;
$b=&$a;
unset($b);
$b=”world”;
echo $a;
其結果是?
3. PHP代碼如下:
$str=”cd”;
$$str=”landog”;
$$str.=”ok”;
echo $cd;
其結果是?
4. 用PHP寫一段代碼,實現不使用第3個變量,交換$a、$b的值,$a、$b的初始值自己定。
5. 根據題目要求,用PHP寫出代碼。
表名User
ID? Name?? Tel???????? Content?? Date
1?? 張三 13333663366? 大專畢業? 2006-10-11
3?? 張三 13612312331? 本科畢業? 2006-10-15
5?? 張四 020-5566556? 中專畢業? 2006-10-15
4?? 王五 13521212125? 大專畢業?? 2006-12-25
2?? …………
6?? …………
假設數據庫連接如下:
$mysql_db=mysql_connect(“local”,”root”,”pass”);
@mysql_select_db(“DB”,$mysql_db);
(1)查詢出所有Name等于“張三”的記錄,并輸出。
(2)按ID升序查詢,只返回排序后的前3條記錄,并輸出。
6. javascript能否定義二維數組,如果不能你如何解決?
7. 假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘后,自動跳轉到b.html。
8. 有兩個文件a.html和a.php,代碼如下:
a.html

<html>
<head>
<meta http-equiv=Content-Type content=text/html;charset=utf-8>
<title>PHP程序員面試</title>
</head>
<body>
<center>
<form method=”post” action=”a.php”>
<table border=”1″>
<tr>
<td align=”right”>姓名:</td>
<td align=”left”><input type=”text” ></td>
</tr>
<tr>
<td align=”right”>電話:</td>
<td align=”left”><input type=”text” ></td>
</tr>
<tr>
<td align=”right”>郵箱:</td>
<td align=”left”><input type=”text” ></td>
</tr>
<tr>
<td align=”right”>地址:</td>
<td align=”left”><input type=”text” ></td>
</tr>
<tr>
<td align=”center” colspan=”2″>
<input type=”submit” value=”提交”>
<input type=”reset” value=”重填”>
</td>
</tr>
</table>
</form>
</center>
</body>
</html>

a. php

<?php
$user_name = $_GET['user_name'];
$user_tel = $_GET['user_tel'];
$user_email = $_GET['user_email'];
$user_add = $_GET['user_add'];
echo “用戶名:$user_name<br>電話:$user_tel<br>郵箱:$user_email<br>地址:$user_add<br>”;
?>

(1)請畫出a.html在瀏覽器的顯示效果圖。
(2)在a.html中輸入:用戶名=張三,電話=020-38259977,郵箱=sunrising@srtek.cn,地址=廣州升瑞,按提交按鈕后輸出結果是?
9. 你是否使用過版本控制工具,如果有,請簡要說明。
10. 利用CSS樣式表定義已訪問的超鏈接字體大小為14pt,顏色為red。
11. 移動任意一位數或符號,使等式成立, 102 = 101-1。注:是移動不是交換,等號不能分開。
12. 規律題,3、1、4、1、5、9、2、(? ), 請按照規律在括號內寫出下一表達式。
13. 規律題,5、8、-3、5、-2、3、-1、(? ),請按照規律在括號內寫出下一表達式。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
答案:

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

2. hello

3. landogok

4.? $a = “abcd”;
$b = “1234″;
echo “初始化時 a=$a,b=$b<br>”;
$a = $a . $b;
$b = strlen( $b );
$b = substr( $a, 0, (strlen($a) – $b ) );
$a = substr( $a, strlen($b) );
echo “交換后 a=$a,b=$b<br>”;

5. (1)$sql = “select *? from User where >? $result = mysql_query( $sql );
while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){
echo $row[‘Name’];
}
(2) $sql = “select * from User order by ID asc limit 0,3”;
$result = mysql_query( $sql );
while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){
echo $row[‘Name’];
}
6. javascript不支持二維數組定義,可以用arr[0] = new array()來解決

7. javascript代碼如下:
<script>
function go2b(){
window.location = “b.html”;
window.close();
}
setTimeout( “go2b()”,5000 ); //5秒鐘后自動執行go2b()
</script>

8.

(1)如下所示:

略。因為懶得插入圖片,如果想看結果可以把代碼保存為html文件,再用瀏覽器打開查看。

(2)輸出結果應為:

姓名:

電話:

郵箱:

地址:

因為表單是用post方式提交,但在a.php中卻用get方式來讀取,所以不會讀到任何值。

9. 略

10.?? a:visited { font-size: 14pt; color: red; }

11.? 102 = 101-1

12. 答案為6,因為∏=3.1415926

13. 答案為2,規律為n=(n-2) – |(n-1)| ,n>=3

================================================================

1、使用單引號括起來的字符串

當使用雙引號來括字符串時,PHP解釋器會對其進行變量替換、轉義等操作,如 “\n”。如果只想輸出一個基本的字符串,用單引號會節省一些資源。當然,如果需要進行變量替換的,那就必須用雙引號了。

2、字符串的輸出

以下哪一條語句的運行速度最快?

print “Hi my name is $a. I am $b”$$
echo “Hi my name is $a. I am $b”$$
echo “Hi my name is “.$a.”. I am “.$b;
echo “Hi my name is “,$a,”. I am “,$b;
echo ‘Hi my name is ‘,$a,’. I am ‘,$b;

最后一條的運行速度是最快的。 print比echo要慢,在字符串中進行變量替換時會慢,而連接字符串要比用逗號連接來得慢,最后一句則是第一個習慣的體現。所以,不在字符串中進行變 量替換不僅會加快程序運行速度,也會讓你的代碼在任何語法高亮顯示的編輯器中顯得更為易懂(變量會被高亮顯示出來)。很少人知道echo的參數可以用逗號 連接,且速度會比字符串連接要來得快。最后再用上第一個習慣,那這條語句就非常好了。

3、在數組索引中使用單引號

正 如你在上面的測試題中所看到的,$x[sales]從嚴格意義上來說是錯誤的,索引應該被括起來,即$x['sales']。這是因為PHP會將 沒有括起來的索引辨認為“裸”字符串,并把它解釋為一個常量。當找不到該常量的定義時,才將其解釋為一個字符串,所以這條語句才是可運行的。把索引括起來 可以省去這部分工作,如果將來正好要用這一字符串定義常量時也就不會有錯誤了。

4、不使用開始標志的縮寫形式

你正在使用 這樣的符號嗎?“<?”是非常糟糕的符號,它會引起與XML解釋器的沖突。而且一旦你發布了這些代碼,那么使用者就必須修改php.ini文件來打 開對此符號的支持。所以實在沒有理由去使用這種形式。用“<?php“吧。

5、盡量不要使用正則表達式

在進行 常規的字符串操作時,盡可能不要去使用正則表達式(preg和ereg系列函數)。str_replace函數要比preg_replace快得多,甚至 strtr函數也要比str_replace來得快。省去這些不必要的麻煩吧,你的老板會感謝你的。

6、不要在循環聲明中使用函數

這個問題不單單出現在PHP中,你可以在其他語言的代碼中經常看到:

差:for($i=0;$i< count($array);$i++){…}

好:$count=count($array);for($i=0;$i& lt;$count;$i++){…}

如果在循環聲明中使用了 count函數,那每次循環都會調用一次。如果循環次數很多,會浪費非常多的時間。

7、不要使用 register_globals和magic quotes

老版本的PHP在安裝時會默認打開這兩個功能,這會引起安全漏洞、編程錯誤及其他的問題,如只有用戶輸入了數據時才會創建變量等。如今這兩個功 能都被舍棄了,每個程序員都應該避免使用。

8、一定要對變量進行初始化(這 里的“初始化”指的是“聲明”)

當需要沒有初始化的變量,PHP解釋器會自動創建一個變量,但依靠這個特性來編程并不是一 個好主意。這會造成程序的粗糙,或者使代碼變得另人迷惑,因為你需要探尋這個變量是從哪里開始被創建的。另外,對一個沒有初始化的變量進行遞增操作要比初 始化過的來得慢。所以對變量進行初始化會是個不錯的主意。

9、對代碼進行注釋

這個問題已經提過很多次了,但再多次也 不夠。我知道有些地方是不聘用不對代碼進行注釋的程序員的。我在前一次工作面試后和副總、面試官一起瀏覽我寫的代碼,當他們對我所做的代碼注釋印象深刻, 還了解了一下我的這一習慣。一天之后,我得到了這個工作。

我知道有些自稱為PHP大師的人聲稱自己的代碼寫得很好,不需要添加什么注 釋。在我看來,這些人都是垃圾。學一寫注釋的規范和技巧,熟悉一下phpDocumentor或Doxygen之類的注釋輔助軟件,都是值得的。

10、 遵循一個編程規范

關于這一點,是你需要在面試中詢問你潛在的老板的,問問他們正在使用什么編程規范。PEAR?Zend?內部規范? 要提及你正在使用的編程規范,不管是你自己創建的,還是目前普遍流行的一種。對于PHP這種松松垮垮的語言來說,如果沒有一個好的編程規范,那么那些代碼 就會看起來想一堆垃圾。發臭的,令人作嘔的垃圾。一些基本的規范包括空格規范、打括號匹配、命名風格等。這對任何一個追求高質量的代碼的人來說都是必須 的。

有人說:“我討厭你的4個空格的縮進。”我要說,什么?用4個空格來縮進?這比用制表符過占用3個字符的空間。更重要的是,只要 是使用比記事本高級的編輯器,你可以自定義制表符的縮進值。所以每個程序員都可以以其最習慣的方式來看代碼。可以時設置為4,也可以設置為0(如果你是個 受虐狂)。反正我不在乎,但你就是不能用空格來縮進!


=========================================================

填空題:
1.在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當前頁面的URL記錄在預定義變量__$_SERVER['HTTP_REFERER']__

2.執行程序段<?php echo 8%(-2) ?>將輸出__0__。

3.在HTTP 1.0中,狀態碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數,其語句為____。

4.數組函數 arsort 的作用是__對數組進行逆向排序并保持索引關系__;語句 error_reporting(2047)的作用是__報告所有錯誤和警告__。

5.PEAR中的數據庫連接字符串格式是____。

6.寫出一個正則表達式,過慮網頁上的所有JS/VBS腳本(即把scrīpt標記及其內容都去掉):preg_replace(“/<script[^>].*?>.*?</script>/si”, “newinfo”, $script);

7.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,然后再用語句____使得Apache把所有擴展名為php的文件都作為PHP腳本處理。
LoadModule php5_module “c:/php/php5apache2.dll” , AddType application/x-httpd-php .php,

8.語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區別是____;為了避免多次包含同一文件,可以用語句__require_once||include_once__來代替它們。

9.類的屬性可以序列化后保存到 session 中,從而以后可以恢復整個類,這要用到的函數是____。

10.一個函數的參數不能是對變量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__設為on.

11.SQL中LEFT JOIN的含義是__自然左外鏈接__。如果 tbl_user記錄了學生的姓名(name)和學號(ID),tbl_score記錄了學生(有的學生考試以后被開除了,沒有其記錄)的學號(ID)

和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,則可以用SQL語句____。

12.在PHP中,heredoc是一種特殊的字符串,它的結束標志必須____。

編程題:
13.寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。
答:
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;
}
}

14.簡述論壇中無限分類的實現原理。
答:
<?php
/*
數據表結構如下:
CREATE TABLE `category` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL default ’0′,
`categoryName` varchar(50) NOT NULL default ”,
PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, ‘一級類別’),
(1, ‘二級類別’),
(1, ‘二級類別’),
(1, ‘二級類別’),
(2, ‘三級類別’),
(2, ’333332′),
(2, ’234234′),
(3, ‘aqqqqqd’),
(4, ‘哈哈’),
(5, ’66333666′);

*/

//指定分類id變量$category_id,然后返回該分類的所有子類
//$default_category為默認的選中的分類
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = “SELECT * FROM category ORDER BY categoryID DESC”;
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array(‘id’ => $rows[categoryID], ‘parent’ => $rows[categoryParentID], ‘name’ => $rows

[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return “”;
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category['id'] == $default_category)
{
echo “<option selected value=”.$category['id'].”";
}else
{
echo “<option value=”.$category['id'].”";
}

if ($level > 0)
{
echo “>” . str_repeat( ” “, $level ) . ” ” . $category['name'] . “</option>\n”;
}
else
{
echo “>” . $category['name'] . “</option>\n”;
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}

/*
函數返回的數組格式如下所示:
Array
(
[1] => Array ( [id] => 1 [name] => 一級類別 [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
[5] => Array ( [id] => 5 [name] => 三級類別 [level] => 2 [ParentID] => 2 )
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
//指定分類id,然后返回數組
function Category_array($category_id = 0,$level=0)
{
global $DB;
$sql = “SELECT * FROM category ORDER BY categoryID DESC”;
$result = $DB->query($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}

foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$options[$k] =
array(
‘id’ => $v['categoryID'], ‘name’ => $v['categoryName'], ‘level’ => $level, ‘ParentID’=>$v['categoryParentID']
);

$children = Category_array($k, $level+1);

if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}

?>

<?php

class cate
{

function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
’0′ => array(
’1′ => array(‘id’ => 1, ‘parent’ => 0, ‘name’ => ’1111′),
’2′ => array(‘id’ => 2, ‘parent’ => 0, ‘name’ => ’2222′),
’4′ => array(‘id’ => 4, ‘parent’ => 0, ‘name’ => ’4444′)
),
’1′ => array(
’3′ => array(‘id’ => 3, ‘parent’ => 1, ‘name’ => ’333333′),
’5′ => array(‘id’ => 5, ‘parent’ => 1, ‘name’ => ’555555′)
),

’3′ => array(
’6′ => array(‘id’ => 6, ‘parent’ => 3, ‘name’ => ’66666′),
’7′ => array(‘id’ => 7, ‘parent’ => 3, ‘name’ => ’77777′)
),
’4′ => array(
’8′ => array(‘id’ => 8, ‘parent’ => 4, ‘name’ => ’8888′),
’9′ => array(‘id’ => 9, ‘parent’ => 4, ‘name’ => ’9999′)
)
);

if (!isset($arr[$category_id]))
{
return “”;
}

foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = “<option selected value=”.$cate['id'].”";
}else{
$txt = “<option value=”.$cate['id'].”";
}

if ($level > 0)
{
$txt1 = “>” . str_repeat( “-”, $level ) . ” ” . $cate['name'] . “</option>\n”;
}else{
$txt1 = “>” . $cate['name'] . “</option>\n”;
}
$val = $txt.$txt1;
echo $val;
self::Get_Category($key, $level + 1, $default_category);
}

}

function getFlush($category_id = 0,$level = 0, $default_category = 0)
{

ob_start();

self::Get_Category($category_id ,$level, $default_category);

$out = ob_get_contents();

ob_end_clean();
return $out;
}
}
$id =$_GET['id'];
echo “<select>”;
$c = new cate();
//$c->Get_Category();
$ttt=? $c->getFlush($id,’0′,’3′);
echo $ttt;
echo “</select>”;
?>

===========================================================

編程題:
1. 寫一個函數,盡可能高效的,從一個標準 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);
}
}

2. 在 HTML 語言中,頁面頭部的 meta 標記可以用來輸出文件的編碼格式,以下是一個標準的 meta 語句
請使用 PHP 語言寫一個函數,把一個標準 HTML 頁面中的類似 meta 標記中的 charset 部分值改為 big5
請注意:
1. 需要處理完整的 html 頁面,即不光此 meta 語句
2. 忽略大小寫
3. ‘ 和 ” 在此處是可以互換的
4. ‘Content-Type’ 兩側的引號是可以忽略的,但 ‘text/html; charset=gbk’ 兩側的不行
5. 注意處理多余空格

3. 寫一個函數,算出兩個文件的相對路徑
如 $a = ‘/a/b/c/d/e.php’;
$b = ‘/a/b/12/34/c.php’;
計算出 $b 相對于 $a 的相對路徑應該是 ../../c/d將()添上
答:function getRelativePath($a, $b) {
$returnPath = array(dirname($b));
$arrA = explode(‘/’, $a);
$arrB = explode(‘/’, $returnPath[0]);
for ($n = 1, $len = count($arrB); $n < $len; $n++) {
if ($arrA[$n] != $arrB[$n]) {
break;
}
}
if ($len – $n > 0) {
$returnPath = array_merge($returnPath, array_fill(1, $len – $n, ‘..’));
}

$returnPath = array_merge($returnPath, array_slice($arrA, $n));
return implode(‘/’, $returnPath);
}
echo getRelativePath($a, $b);

=====================================================================

基礎題:
1.表單中 get與post提交方法的區別?
答:get是發送請求HTTP協議通過url參數傳遞進行接收,而post是實體數據,可以通過表單提交大量信息.

2.session與cookie的區別?
答:session:儲存用戶訪問的全局唯一變量,存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的存放
cookie:用來存儲連續訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。
兩者都可通過時間來設置時間長短

3.數據庫中的事務是什么?
答:事務(transaction)是作為一個單元的一組有序的數據庫操作。如果組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,

事務則提交,其修改將作用于所有其他數據庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。

簡述題:
1、用PHP打印出前一天的時間格式是2006-5-10 22:21:21(2分)
答:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’));

2、echo(),print(),print_r()的區別(3分)
答:echo是PHP語句, print和print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)
print()??? 只能打印出簡單類型變量的值(如int,string)
print_r() 可以打印出復雜類型變量的值(如數組,對象)
echo???? 輸出一個或者多個字符串

3、能夠使HTML和PHP分離開使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

5、使用哪些工具進行版本控制?(1分)
答:cvs,svn,vss;

6、如何實現字符串翻轉?(3分)
答:echo strrev($a);

7、優化MYSQL數據庫的方法。(4分,多寫多得)
答:
1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設置NOT NULL,例如’省份,性別’,最好設置為ENUM
2、使用連接(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
3、使用聯合(UNION)來代替手動創建的臨時表
a.創建臨時表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
4、事務處理:
a.保證數據完整性,例如添加和修改同時,兩者成立則都執行,一者失敗都失敗
mysql_query(“BEGIN”);
mysql_query(“INSERT INTO customerinfo (name) VALUES (‘$name1′)”;
mysql_query(“SELECT * FROM `orderinfo` where customerid=”.$id”);
mysql_query(“COMMIT”);
5、鎖定表,優化事務處理:
a.我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。
包含有 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”);
6、使用外鍵,優化鎖定表
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;
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、優化查詢語句
a.最好在相同字段進行比較操作,在建立好的索引字段上盡量減少函數操作
例子1:
SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
SELECT * FROM order WHERE orderDate<”2008-01-01″;(快)
例子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<”good”;

8、PHP的意思(送1分)
答:PHP是一個基于服務端來創建動態網站的腳本語言,您可以用PHP和HTML生成網站主頁

9、MYSQL取得當前時間的函數是?,格式化日期的函數是(2分)
答:now(),date()

10、實現中文字串截取無亂碼的方法。(3分)
答:function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.’…’;
}else{
return $string;
}
}

11、您是否用過版本控制軟件? 如果有您用的版本控制軟件的名字是?(1分)
12、您是否用過模板引擎? 如果有您用的模板引擎的名字是?(1分)
答:用過,smarty

13、請簡單闡述您最得意的開發之作(4分)
答:信息分類

14、對于大流量的網站,您采用什么樣的方法來解決訪問量問題?(4分)
答:確認服務器硬件是否足夠支持當前的流量,數據庫讀寫分離,優化數據表,
程序功能規則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量

15、用PHP寫出顯示客戶端IP與服務器IP的代碼1分)
答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv(‘REMOTE_ADDR’);
打印服務器IP:echo gethostbyname(“www.bolaiwu.com”)

16、語句include和require的區別是什么?為避免多次包含同一文件,可用(?)語句代替它們? (2分)
答:require->require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執行require
include->include有返回值,而require沒有(可能因為如此require的速度比include快)
注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是

17、如何修改SESSION的生存時間(1分).
答:方法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);

18、有一個網頁地址, 比如PHP開發資源網主頁: http://www.phpres.com/index.html,如何得到它的內容?($1分)
答:方法1(對于PHP5及更高版本):
$readcontents = fopen(“http://www.phpres.com/index.html”, “rb”);
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents(“http://www.phpres.com/index.html”);

19、在HTTP 1.0中,狀態碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數,其語句為(?);(2分)
答:狀態401代表未被授權,header(“Location:www.xxx.php”);

12、在PHP中,heredoc是一種特殊的字符串,它的結束標志必須?(1分)
答:heredoc的語法是用”<<<”加上自己定義成對的標簽,在標簽范圍內的文字視為一個字符串
例子:
$str = <<<SHOW
my name is Jiang Qihui!
SHOW;

13、談談asp,php,jsp的優缺點(1分)
答:ASP全名Active Server Pages,是一個WEB服務器端的開發環境, 利用它可以產生和運
行動態的、交互的、高性能的WEB服務應用程序。ASP采用腳本語言VB Script(Java script
)作為自己的開發語言。
PHP是一種跨平臺的服務器端的嵌入式腳本語言. 它大量地借用C,Java和Perl語言的語法
, 并耦合PHP自己的特性,使WEB開發者能夠快速地寫出動態生成頁面.它支持目前絕大多數數
據庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點(http://www.php.ne
t)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。
JSP 是Sun公司推出的新一代站點開發語言,他完全解決了目前ASP,PHP的一個通病--
腳本級執行(據說PHP4 也已經在Zend 的支持下,實現編譯運行).Sun 公司借助自己在Jav
a 上的不凡造詣,將Java 從Java 應用程序 和 Java Applet 之外,又有新的碩果,就是Js
p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強大的站點
程序。
三者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。
但JSP代碼被編譯成 Servlet 并由 Java 虛擬機解釋執行,這種編譯操作僅在對 JSP 頁面的
第一次請求時發生。在 ASP 、PHP、JSP 環境下, HTML 代碼主要負責描述信息的顯示樣式
,而程序代碼則用來描述處理邏輯。普通的 HTML 頁面只依賴于 Web 服務器,而 ASP 、PH
P、JSP 頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到
HTML 代碼中,然后一起發送給瀏覽器。 ASP 、PHP、 JSP三者都是面向 Web 服務器的技術
,客戶端瀏覽器不需要任何附加的軟件支持。

14、談談對mvc的認識(1分)
答:由模型(model),視圖(view),控制器(controller)完成的應用程序
由模型發出要實現的功能到控制器,控制器接收組織功能傳遞給視圖;

15、寫出發貼數最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

16. 請說明php中傳值與傳引用的區別。什么時候傳值什么時候傳引用?(2分)
答:按值傳遞:函數范圍內對值的任何改變在函數外部都會被忽略
按引用傳遞:函數范圍內對值的任何改變在函數外部也能反映出這些修改
優缺點:按值傳遞時,php必須復制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。
按引用傳遞則不需要復制值,對于性能提高很有好處。

17. 在PHP中error_reporting這個函數有什么作用? (1分)
答:設置錯誤級別與錯誤信息回報

18. 請寫一個函數驗證電子郵件的格式是否正確 (2分)
答: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);
}

19. 簡述如何得到當前執行腳本路徑,包括所得到參數。(2分)
答:$script_name = basename(__file__); print_r($script_name);

21、JS表單彈出對話框函數是?獲得輸入焦點函數是? (2分)
答:彈出對話框: alert(),prompt(),confirm()
獲得輸入焦點 focus()

22、JS的轉向函數是?怎么引入一個外部JS文件?(2分)
答:window.location.href,<script type=”text/javascript” src=”js/js_function.js”></script>

23、foo()和@foo()之間有什么區別?(1分)
答:@foo()控制錯誤輸出

24、如何聲明一個名為”myclass”的沒有方法和屬性的類? (1分)
答:class myclass{ }

25、如何實例化一個名為”myclass”的對象?(1分)
答:new myclass()

26、你如何訪問和設置一個類的屬性? (2分)
答:$object = new myclass();
$newstr = $object->test;
$object->test = “info”;

27、mysql_fetch_row() 和mysql_fetch_array之間有什么區別? (1分)
答:mysql_fetch_row是從結果集取出1行數組,作為枚舉
mysql_fetch_array是從結果集取出一行數組作為關聯數組,或數字數組,兩者兼得

28、GD庫是做什么用的? (1分)
答:gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。
在網站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網站數據生成報表。

29、指出一些在PHP輸入一段HTML代碼的辦法。(1分)
答:echo “<a href=’index.php’>aaa</a>”;

30、下面哪個函數可以打開一個文件,以對文件進行讀和寫操作?(1分)
(a) fget() (b) file_open() (c) fopen() (d) open_file()? [? c? ]

31、下面哪個選項沒有將 john 添加到users 數組中? (1分)
(a) $users[] = ‘john’;
(b) array_add($users,’john’);
(c) array_push($users,‘john’);
(d) $users ||= ‘john’;? [? a , c? ]

32、下面的程序會輸入是否?(1分)
$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
?>
輸出:10

33、使用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"];
}

34、如何使用下面的類,并解釋下面什么意思?(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方法,實例化類調用方法多字符串加密

35、寫出 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=’張四’”);

36、請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什么區別(2分)
答:int是數字類型,char固定長度字符串,varchar實際長度字符串,datetime日期時間型,text文本字符串
char的場地固定為創建表設置的長度,varchar為可變長度的字符

38、寫出以下程序的輸出結果 (1分)
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
答:4

39、檢測一個變量是否有設置的函數是否?是否為空的函數是?(2分)
答:isset($str),empty($str);

40、取得查詢結果集總數的函數是?(1分)
答:mysql_num_rows($result);

41、$arr = array(‘james’, ‘tom’, ‘symfony’); 請打印出第一個元素的值 (1分)
答:echo $array[0];

42、請將41題的數組的值用’,'號分隔并合并成字串輸出(1分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].”,”;}

43、$a = ‘abcdef’; 請取出$a的值并打印出第一個字母(1分)
答:echo $a{0} 或 echo substr($a,0,1)

44、PHP可以和sql server/oracle等數據庫連接嗎?(1分)
答:當然可以

45、請寫出PHP5權限控制修飾符(3分)
答:public(公共),private(私用),protected(繼承)

46、請寫出php5的構造函數和析構函數(2分)
答:__construct , __destruct

47、完成以下:
(一)創建新聞發布系統,表名為message有如下字段 (3分)
id 文章id
title 文章標題
content 文章內容
category_id 文章分類id
hits 點擊量
答:CREATE TABLE ‘message’(
‘id’ int(10) NOT NULL auto_increment,
‘title’ varchar(200) default NULL,
‘content’ text,
‘category_id’ int(10) NOT NULL,
‘hits’ int(20),
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(“<select name=’category’ value=”>\n”);
while($rowArray=mysql_fetch_array($result))
{
print(“<option value=’”.$rowArray['category_id'].”‘>”.$rowArray['categroy_name'].”</option>\n”);
}
print(“</select>”);
}

=============================================================

PHP對Cookie的接收和處理的支持非常好,是完全自動的,跟FORM變量的原則一樣,特別簡單。
比如設置一個名為 MyCookier的Cookie,PHP會自動從WEB服務器接收的HTTP頭里把它分析出來,并形成一個與普通變量一樣的變量,名為$ myCookie,這個變量的值就是Cookie的值。數組同樣適用。另外一個辦法是引用PHP的全局變量$HTTP_COOKIE_VARS數組。
分別舉例如下:(假設這些都在以前的頁面里設置過了,并且仍然有效)

echo $MyCookie;
echo $CookieArray[0];
echo $_COOKIE["MyCookie"];
echo $HTTP_COOKIE_VARS["MyCookie"];
要刪除一個已經存在的Cookie,有兩個辦法:

1、SetCookie(“Cookie”, “”);
2、SetCookie(“Cookie”, “value” , time()-1 / time() );

使用Cookie的限制

1、必須在HTML文件的內容輸出之前設置;
2、不同的瀏覽器對Cookie的處理不一致,且有時會出現錯誤的結果。
3、限制是在客戶端的。一個瀏覽器能創建的Cookie數量最多為30個,并且每個不能超過4KB,每個WEB站點能設置的Cookie總數不能超過20個。

============================================================

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的一份超级全面的PHP面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 香蕉视频一区 | 国产精品粉嫩 | 国产又粗又猛又爽又黄91精品 | 成人精品三级av在线看 | 久久成人免费视频 | 91视频免费 | 99热思思 | 久久精品电影网 | 一区二区三区四区国产 | 永久看看免费大片 | 麻豆精品视频在线观看 | 欧美性猛交99久久久久99按摩 | 狠狠干中文字幕 | 日本xxxwww | 午夜aaa片一区二区专区 | 男人你懂的网站 | 亚洲综合激情小说 | 中文字幕 人妻熟女 | 亚洲精品色午夜无码专区日韩 | 免费av在线| 中文字幕免费视频观看 | 蜜臀视频一区二区三区 | 99在线观看免费视频 | 天天天干干干 | 手机看片日韩欧美 | 国产最新在线观看 | 国产主播喷水 | 亚洲无限观看 | 亚洲一区 欧美 | 亚洲精品二三区 | 国产精品香蕉国产 | 五月激情在线 | 免费色播| 国产对白自拍 | 懂色av蜜臀av粉嫩av | 久久国产热| 国产精品666| 成人av高清 | av免费观看网| 天天干国产| 日本中文字幕第一页 | 少妇高潮惨叫久久久久久 | 巨乳女教师的诱惑 | 国产精品无码久久久久久 | 日本高清视频在线 | 欧美日韩欧美日韩在线观看视频 | 国产第一福利影院 | 一区二区三区四区不卡 | 欧美性猛交xxxx乱大交退制版 | 超碰成人在线观看 | 国产精品福利在线播放 | 黑人极品ⅴideos精品欧美棵 | 久久久高清视频 | a黄色片 | 亚洲卡一| 欧美成人乱码一二三四区免费 | 青青草狠狠干 | 日韩精品tv | 国产农村熟妇videos | 午夜精品亚洲 | 一区二区三区影院 | 德国性经典xxxx性hd | 久久久高清免费视频 | 国产好片无限资源 | 狠狠做深爱婷婷综合一区 | 欧美处女 | 超碰123| av2014天堂| 内射毛片内射国产夫妻 | 四虎在线精品 | 3d动漫精品啪啪一区二区下载 | 大尺度做爰床戏呻吟舒畅 | 久久久久青草 | 亚洲成在线观看 | 黄色免费在线播放 | 韩国一区二区三区视频 | 久久久久久久毛片 | 26uuu精品一区二区在线观看 | av在线电影院 | 亚洲精品99久久久久中文字幕 | 男女偷爱性视频刺激 | 欧洲mv日韩mv国产 | 久热精品免费视频 | 日本三级aaa| 天天做天天爽 | 午夜不卡福利视频 | 精品国产污污免费网站入口 | 国产一级在线 | 有奶水的迷人少妇 | 国产精品黄色av | 人妻少妇精品中文字幕av蜜桃 | 久久夜夜夜 | 精品中文字幕一区二区 | 围产精品久久久久久久 | 亚洲欧美另类日本 | 亚洲 成人 av| 高清不卡毛片 | 最近中文字幕无免费 | 伊人伊人伊人 |