當前位置:首頁 » 編程語言 » phpsql面試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

phpsql面試題

發布時間: 2022-07-23 09:40:49

Ⅰ PHP面試問題,完全迷糊

我建議你不要去這家公司,理由如下:
1.面試題目闡述不明。比如,不同的系統登錄方式不完全相同,點擊按鈕不過重復提交而已,好的架構設計裡面根本不會出現任何問題。
2.出題者連一些基本術語都不清楚,sql注入乃是一種對利用漏洞對網站進行攻擊的方法,出題者完全不是這個意思。
3.提出一些泛泛的問題,比如第三個問題,你自己都覺得很無語。
4.關於測試的三個問題4、5、6更是不知所雲。我請問,測試結束有行業統一的標准嗎?或者說從廣義上來說,測試會結束嗎?生成哪些文檔更加無厘頭,這完全視公司的規定而定。第6個問題更是讓人噴血,你看過唐伯虎點秋香裡面對穿腸嗎,就照那個噴。

Ⅱ 面試題答案php可以和sql server或者oracle連接么

你好,php可以連接微軟的sql server 和甲骨文公司的Oracle 具體是在框架裡面加資料庫驅動即可

Ⅲ php試題寫出下面sql語句返回的結果

$rs=mysql_query($sql); if(empty($rs)){ echo '數據為空'; }else{ // }

Ⅳ php面試題解答

1,
var x=document.getElementById("img1");
var title=document.getElementById("img1").title;
var sina_title=document.getElementById("img1").sina_title;

2,serialize(),unserialize();

3,編碼方式不同,urlencode()將字串以URL編碼。例如空格就會變成加號。
rawurlencode()將url編碼成url的字元串專用格式,特殊字元回轉換成百分號後面加兩個十六子介數字的格式。
4,strip_tags(),html_entity_decode();

5,$str=preg_replace("/\<script.*\>.*\<\/script\>/i","",$str);
6,左連接,左連接的表如果沒有匹配的數據不影響結果。
7
SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID
7 system(),exec(),passthru()
8,json_decode ,json_encode
9 isset() empty()
10 後者的許可權大於前者,後者是OFF的話,前者就算是E-ALL也沒用。
11,$_SERVER['REMOTE_ADDR'];
12,incov()
echo iconv("gbk",""UTF-8,"我們");
mb_convert_encoding($str, "GBK", "UTF-8")
13 explode() split() ;implode() join()
14 注意事項挺多的,懶得寫。

1,超時,伺服器已經關閉連接
2 靜態表欄位長度固定,自動填充,讀寫速度很快,便於緩存和修復,但比較占硬碟,動態表是欄位長度不固定,節省硬碟,但更復雜,容易產生碎片,速度慢,出問題後不容易重建。
3InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優缺點,視具體應用而定。基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級資料庫功能。
MyIASM是IASM表的新版本,有如下擴展:
二進制層次的可移植性。
NULL列索引。
對變長行比ISAM表有更少的碎片。
支持大文件。
更好的索引壓縮。
更好的鍵嗎統計分布。
更好和更快的auto_increment處理。
1.MySQL最大的優勢在於MyISAM引擎下的簡單SELECT,INSERT和UPDATE快速操作
2.MyISAM類型的數據文件可以在不同操作系統中COPY,這點很重要,布署的時候方便點。

以下是一些細節和具體實現的差別:
1.InnoDB不支持FULLTEXT類型的索引。
2.InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含 where條件時,兩種表的操作是一樣的。
3.對於AUTO_INCREMENT類型的欄位,InnoDB中必須包含只有該欄位的索引,但是在MyISAM表中,可以和其他欄位一起建立聯合索引。
4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。
5.LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。
另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表,例如update table set num=1 where name like 「%aaa%」
以暫對存儲引擎的認識,覺得 InnoDB 支持外鍵,在數據量可以用「龐大」來形容時,在有良好的 INDEX 的基礎上,InnoDB 的查詢速度應該比 MyISAM 要快。
在 Falcon 有穩定版本前,我想 MyISAM 是一個可用的選擇方案。
任何一種表都不是萬能的,只用恰當的針對業務類型來選擇合適的表類型,才能最大的發揮MySQL的性能優勢
3, 都是1 ^^懶得回答了,睡覺去。

Ⅳ php 比較難的問題面試題有哪些

不管是什麼語言,如果你去小公司,你就直接拿著你的電腦去,然後給他們看你的項目。如果是大公司一般的題目就 sql的增刪改查,再來個遞歸

Ⅵ php框架中的方法與原生sql語句的區別,面試的時候被問到這個問題。

php框架中的方法最終也是要被框架解析成sql語句來執行的,如果使用原生的sql效率會高一些,但是失去了一些靈活性和安全性(比如框架在解析的時候可能會對數據做安全性檢查,唯一性檢查等等,這就是使用框架的好處)

Ⅶ php 面試必考題 mysql的MyISAM 和 InnoDB 的區別

1.InnoDB不支持FULLTEXT類型的索引。

2.InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from
table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含
where條件時,兩種表的操作是一樣的。

3.對於AUTO_INCREMENT類型的欄位,InnoDB中必須包含只有該欄位的索引,但是在MyISAM表中,可以和其他欄位一起建立聯合索引。

4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。MyISAM 是表所
innodb是行鎖

5.LOAD TABLE FROM MASTER(從主負載表)操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。

另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表,例如update
table set num=1 where name like 「"2%」

6.InnoDB 支持事物

選擇存儲引擎 根據實際情況選擇。

一般情況下如果查詢多建議使用myIsam 。

如果你需要事務處理或是外鍵,那麼InnoDB 可能是比較好的方式。

優化MYSQL資料庫的方法:

1,選取最適用的欄位屬性,盡可能減少定義欄位長度,盡量把欄位設置NOT NULL,例如'省份,性別',最好設置為ENUM

2,使用join代替子查詢

3,使用聯合(UNION)來代替手動創建的臨時表

4,事務處理(保證數據完整性,例如添加和修改同時,兩者成立則都執行,一者失敗都失敗)

5,適當建立索引(如何建立索引?索引的利與弊?)

6,優化sql語句

7,explain可以看到mysql執行計劃

8,分表(垂直分表,水平分表?)

9,資料庫主從

Ⅷ php程序員面試題,mysql怎麼防止注入

php程序員面試題,mysql怎麼防止注入
引發
SQL
注入攻擊的主要原因,是因為以下兩點原因:

1. php 配置文件 php.ini 中的 magic_quotes_gpc選項沒有打開,被置為 off

2. 開發者沒有對數據類型進行檢查和轉義

Ⅸ PHP程序員上機面試題(並附答案,回答好的加分)

某大公司的PHP面試題

管理提醒: 本帖被 haowu 執行取消置頂操作(2009-07-30)
1. 如何用php的環境變數得到一個網頁地址的內容?ip地址又要怎樣得到?
[php]
echo $_SERVER ['PHP_SELF'];
echo $_SERVER ['SERVER_ADDR'];
[/php]

2. 求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數
[php]
$begin=strtotime('2007-2-5');
$end=strtotime('2007-3-6');
echo ($end-$begin)/(24*3600);
[/php]

3. 請寫一個函數,實現以下功能:
字元串「open_door」 轉換成 「OpenDoor」、」make_by_id」 轉換成 」MakeById」。
[php]
function changeStyle(& $str) {

/*$str = str_replace ( "_", " ", $str );
$str = ucwords ( $str );
$str = str_replace ( " ", "", $str );
return $str;*/

$arrStr=explode('_',$str);
foreach($arrStr as $key=>$value){
$arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);
}
return implode('',$arrStr);
}
$s = "open_door";
echo changeStyle ( $s );
[/php]

4. 要求寫一段程序,實現以下數組$arr1轉換成數組$arr2:
[php]$arr1 = array (
'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),
'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' )
);
$arr2 = array (
'0' => array (
'0' => array ( 'tid' => 1, 'name' => 'Name1'),
'1' => array ( 'tid' => 2, 'name' => 'Name2'),
'2' => array ( 'tid' => 5, 'name' => 'Name3'),
'3' => array ( 'tid' => 7, 'name' => 'Name4')
),
'1' => array (
'0' => array ( 'tid' => 9, 'name' => 'Name5' )
)
);
<?php
$arr1 = array (
'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),
'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' )
);
function changeArrayStyle($arr){
foreach($arr as $key=>$value){
$result[$value['fid']][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo "<pre>";
var_mp($arr2);
[/php]

5. 請簡述資料庫設計的範式及應用。
一般第3範式就足以,用於表結構的優化,這樣做既可以避免應用程序過於復雜同時也避免了SQL語句過於龐大所造成系統效率低下。
ANSWER:
第一範式:若關系模式R的每一個屬性是不可再分解的,再屬於第一範式。
第二範式:若R屬於第一範式,且所有的非碼屬性都完全函數依賴於碼屬性,則為第二範式。
第三範式:若R屬於第二範式,且所有的非碼屬性沒有一個是傳遞函數依賴於候選碼,則屬於第三範式。
6.一個表中的Id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數,用SQL語句及視圖、存儲過程分別實現。
存儲過程:
[php]
DELIMITER //
create procere proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;

[/php]
視圖:
create view v_countNum as select member_id,count(*) as countNum from member group by member_id
select countNum from v_countNum where member_id=1
7 表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。
[php]select
case
when first_name>middle_name then
case when first_name>last_name then first_name
else last_name end
else
case when middle_name>last_name then middle_name else last_name
end
end as name
from member
[/php]
8請簡述項目中優化sql語句執行效率的方法,從哪些方面,sql語句性能如何分析?
ANSWER: sql優化有鳥用,不如直接加索引。
9 如果模板是用smarty模板。怎樣用section語句來顯示一個名為$data的數組。比如:
[php]$data = array(
[0] => array( [id]=8 [name]=』name1′)
[1] => array( [id]=10 [name]=』name2′)
[2] => array( [id]=15 [name]=』name3′)
……
)[/php]
寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢?
占無答案.
10 寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。(目錄操作)
[php] <?php
$d = dir(dirname(__file__));
//echo "Handle: " . $d->handle . "\n";
//echo "Path: " . $d->path . "\n";
while ( false !== ($entry = $d->read ()) ) {
echo $entry . "<br />";
}
$d->close ();
[/php]

11 兩張表 city表和province表。分別為城市與省份的關系表。
city:
id City Provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
province:
id Province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關系兩個表,實現:顯示城市的基本信息。?
(2) 顯示欄位:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
。。。。。。。。。
。。。。。。。。。
(2)如果要統計每個省份有多少個城市,請用group by 查詢出來。?
顯示欄位:省份id ,省份名,包含多少個城市。
ANSWER:
1.select A.id,A.Cityname,B.Province from city A,province B where A.provinceid=B.id
2.select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
12. 按照你的經驗請簡述軟體工程進行軟體開發的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過那種,有缺點是什麼?
公司用dbdesigner及cvs,測試管理工具用的是Mantis
13. 請簡述操作系統的線程與進程的區別。列舉LINUX下面你使用過的軟體?
14. 請使用偽語言結合數據結構冒泡排序法對以下一組數據進行排序 10 2 36 14 10 25 23 85 99 45。
[php]function bubble_sort(& $arr){
$number=count($arr);
for($i=0;$i<$number-1;$i++){
for($j=0;$j<$number-1-$i;$j++){
if($arr[$j]>$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
}
$str="10 2 36 14 10 25 23 85 99 45";
$arr=explode(" ",$str);
bubble_sort($arr);
echo "<pre>";
var_mp($arr);
[/php]