在php開(kāi)發(fā)過(guò)程中,我們需要連接數(shù)據(jù)庫(kù)來(lái)開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站局服,連接數(shù)據(jù)庫(kù)通常有四種方式:Mysql-connect(),Mysqli,PDO,ADODB,接下來(lái)就介紹這四種數(shù)據(jù)庫(kù)連接方式的具體實(shí)現(xiàn)步驟:
Mysql_connect
這是我們剛開(kāi)始學(xué)習(xí)php時(shí)最開(kāi)始碰到到的數(shù)據(jù)庫(kù)連接方式,通過(guò)mysql_connect()函數(shù)可以返回連接結(jié)果九妈,則返回一個(gè) MySQL 連接標(biāo)識(shí),失敗則返回 FALSE脆淹。,因此可以進(jìn)行后續(xù)的操作.
代碼示例
<?php
$con=mysql_connect("localhost" ,"root","password")
if($con){
mysql_select_db("db_name",$con);
$sql="select * from table_name where id=1";
$result=mysql_query($sql);
while($row=mysql_fetch_row($result)){
echo "$row";
}
}else{
die("無(wú)法連接數(shù)據(jù)庫(kù)".mysql_error());
}
mysql_close($con);
?>
注意
這種連接方式是短連接,不是長(zhǎng)連接侣姆,若長(zhǎng)連接則使用mysql_pconnetct()
Mysqli
這是一種面向?qū)ο蟮臄?shù)據(jù)庫(kù)連接方式,在連接前需要實(shí)例化一個(gè)對(duì)象脖咐,然后通過(guò)這個(gè)對(duì)象進(jìn)行數(shù)據(jù)庫(kù)操作
代碼示例
<?php
$con=new mysqli("localhost","root","password","db_name");
if(!mysqli_connect_error()){
$sql="select * from table_name where id=1";
$result=$con->query($sql);
while($row=$result->fetch_row($result)){
echo "$row";
}
}else{
die("無(wú)法連接數(shù)據(jù)庫(kù)".mysql_error());
}
mysqli是一種長(zhǎng)連接方式,并且比mysql_connect更加安全
PDO
什么是pdo呢汇歹,pdo是php5中心加進(jìn)去的鏈接數(shù)據(jù)庫(kù)的方式,
代碼示例
<?php
$pdo=new
PDO('mysql:host=localhost;dbname=db_name',"root",
$sql="select * from table_name where id=1";
"password");
try{
$result=$pdo->query($sql);
foreach($result as $k){
print_r($k);
}
}catch(PDOException $e){
echo $e->getMessage();
}
?>
ADODB
不管后端數(shù)據(jù)庫(kù)如何屁擅,存取數(shù)據(jù)庫(kù)的方式都是一致的,開(kāi)發(fā)設(shè)計(jì)人員不必為了某一套數(shù)據(jù)庫(kù)产弹,而必須再學(xué)習(xí)另一套不同的存取方法派歌,這大大減輕開(kāi)發(fā)人員的知識(shí)負(fù)擔(dān),過(guò)去的知識(shí)往后仍可繼續(xù)使用
代碼示例
require_once './adodb5/adodb.inc.php';
$conn = &ADONewConnection('mysql');
$conn->connect('localhost','root','','test');
$conn->Execute("set names utf8");
$res = $conn->Execute("select * from user");
if (!$res){
echo $conn->ErrorMsg();
}else{
var_dump($res);
}
總結(jié)
這里有四種連接數(shù)據(jù)庫(kù)的方式痰哨,至于選擇哪種胶果,就要看每種方式的優(yōu)缺點(diǎn)。
mysql_connect()
設(shè)計(jì)開(kāi)發(fā)允許PHP應(yīng)用與MySQL數(shù)據(jù)庫(kù)交互的早期擴(kuò)展斤斧。mysql擴(kuò)展提供了一個(gè)面向過(guò)程 的接口早抠;并且是短連接,當(dāng)多次連接數(shù)據(jù)庫(kù)時(shí)撬讽,需要?jiǎng)?chuàng)建多個(gè)進(jìn)程蕊连。
mysqli
mysqli擴(kuò)展有一系列的優(yōu)勢(shì),相對(duì)于mysql擴(kuò)展的提升主要有:面向?qū)ο蠼涌凇?prepared語(yǔ)句支持游昼、多語(yǔ)句執(zhí)行支持甘苍、事務(wù)支持、增強(qiáng)的調(diào)試能力烘豌、嵌入式服務(wù)支持载庭。
pdo
PHP數(shù)據(jù)對(duì)象,是PHP應(yīng)用中的一個(gè)數(shù)據(jù)庫(kù)抽象層規(guī)范。PDO提供了一個(gè)統(tǒng)一的API接口可以囚聚,使得你的PHP應(yīng)用不去關(guān)心具體要 連接的數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)類(lèi)型靖榕。也就是說(shuō),如果你使用PDO的API靡挥,可以在任何需要的時(shí)候無(wú)縫切換數(shù)據(jù)庫(kù)服務(wù)器序矩。
adodb
使用 ADODB 最大的優(yōu)點(diǎn)之一是:不管后端數(shù)據(jù)庫(kù)如何,存取數(shù)據(jù)庫(kù)的方式都是一致的跋破,開(kāi)發(fā)設(shè)計(jì)人員不必為了某一套數(shù)據(jù)庫(kù)簸淀,而必須再學(xué)習(xí)另一套不同的存取方法,這大大減輕開(kāi)發(fā)人員的知識(shí)負(fù)擔(dān)毒返,過(guò)去的知識(shí)往后仍可繼續(xù)使用租幕,轉(zhuǎn)移數(shù)據(jù)庫(kù)平臺(tái)時(shí),程序代碼也不必做太大的更動(dòng)拧簸。