php使用PDO執(zhí)行SQL語(yǔ)句的方法分析
本文實(shí)例講述了php使用PDO執(zhí)行SQL語(yǔ)句的方法。分享給大家供大家參考,具體如下:
exec()方法
exec()方法返回執(zhí)行后受影響行數(shù),語(yǔ)法如下:
int PDO::exec(string statement)
參數(shù)statement是要執(zhí)行的SQL語(yǔ)句。該方法返回執(zhí)行查詢時(shí)受影響的行數(shù),通常情況下用于INSERT,DELETE和UPDATE語(yǔ)句中。
例如:
$dbms='mysql';//數(shù)據(jù)庫(kù)類型
$dbName='admin';//使用的數(shù)據(jù)庫(kù)
$user='root';//數(shù)據(jù)庫(kù)連接用戶名
$pwd='password';//數(shù)據(jù)庫(kù)連接密碼
$host='localhost';//數(shù)據(jù)庫(kù)主機(jī)名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一個(gè)PDO對(duì)象,就是創(chuàng)建了數(shù)據(jù)庫(kù)連接對(duì)象$pdo
$query="insert into user(username,password) values('admin','123456')";//需要執(zhí)行的sql語(yǔ)句
$res=$pdo->exec($query);//執(zhí)行添加語(yǔ)句并返回受影響行數(shù)
echo "數(shù)據(jù)添加成功,受影響行數(shù)為: ".$res;
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}
運(yùn)行結(jié)果為:
數(shù)據(jù)添加成功,受影響行數(shù)為: 1
query()方法
query()方法用于返回執(zhí)行查詢后的結(jié)果集,語(yǔ)法如下
PDOStatement PDO::query(string statement)
參數(shù)statement 是要執(zhí)行的SQL語(yǔ)句。它返回的是一個(gè)PDOStatement對(duì)象
例如:
$dbms='mysql';
$dbName='admin';
$user='root';
$pwd='905407339';
$host='localhost';
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);
$query="select * from user";
$res=$pdo->query($query);
print_r($res);
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}
運(yùn)行結(jié)果為:
PDOStatement Object ( [queryString] => select * from user )
如果要看查詢的具體結(jié)果,可以通過(guò)foreach語(yǔ)句完成循環(huán)輸出
例如:
foreach($res as $val){
echo $val['username']."----".$val['password'].'<br>';
}
運(yùn)行結(jié)果為:
107lab----e10adc3949ba59abbe56e057f20f883e admin----123456
說(shuō)明:如果要查看foreach的詳細(xì)用法請(qǐng)查看:http://www.dhdzp.com/article/68786.htm
query()與exec()
query可以實(shí)現(xiàn)所有exec的功能
例如:
$dbms='mysql';//數(shù)據(jù)庫(kù)類型
$dbName='admin';//使用的數(shù)據(jù)庫(kù)
$user='root';//數(shù)據(jù)庫(kù)連接用戶名
$pwd='905407339';//數(shù)據(jù)庫(kù)連接密碼
$host='localhost';//數(shù)據(jù)庫(kù)主機(jī)名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一個(gè)PDO對(duì)象,就是創(chuàng)建了數(shù)據(jù)庫(kù)連接對(duì)象$pdo
$query="insert into user(username,password) values('admin','123456')";//需要執(zhí)行的sql語(yǔ)句
$res=$pdo->query($query);//執(zhí)行添加語(yǔ)句并返回受影響行數(shù)
echo "數(shù)據(jù)添加成功,受影響行數(shù)為: ".$res->rowCount();
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}
運(yùn)行結(jié)果為:
數(shù)據(jù)添加成功,受影響行數(shù)為: 1
注:
1、query和exec都可以執(zhí)行所有的sql語(yǔ)句,只是返回值不同而已。
2、query可以實(shí)現(xiàn)所有exec的功能。
3、當(dāng)把select語(yǔ)句應(yīng)用到 exec 時(shí),總是返回 0
預(yù)處理語(yǔ)句----prepare()語(yǔ)句和execute()語(yǔ)句
預(yù)處理語(yǔ)句包括prepare()和execute()兩種方法。首先,通過(guò)prepare()方法做查詢準(zhǔn)備工作,然后通過(guò)execute()方法執(zhí)行查詢,并且還可以通過(guò)bindParam()方法來(lái)綁定參數(shù)給execute()方法,語(yǔ)法如下:
PDOStatement PDO::prepare(string statement[,array driver_options])
bool PDOStatement::execute([array input_parameters])
例如:
在PDO中通過(guò)預(yù)處理語(yǔ)句prepare()和execute()執(zhí)行SQL查詢語(yǔ)句,并且應(yīng)用while()語(yǔ)句和fetch()方法完成數(shù)據(jù)的循環(huán)輸出
$dbms='mysql';//數(shù)據(jù)庫(kù)類型
$dbName='admin';//使用的數(shù)據(jù)庫(kù)
$user='root';//數(shù)據(jù)庫(kù)連接用戶名
$pwd='905407339';//數(shù)據(jù)庫(kù)連接密碼
$host='localhost';//數(shù)據(jù)庫(kù)主機(jī)名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一個(gè)PDO對(duì)象,就是創(chuàng)建了數(shù)據(jù)庫(kù)連接對(duì)象$pdo
$query="select * from user";//需要執(zhí)行的sql語(yǔ)句
$res=$pdo->prepare($query);//準(zhǔn)備查詢語(yǔ)句
$res->execute();
while($result=$res->fetch(PDO::FETCH_ASSOC)){
echo $result['id']." ".$result['username']." ".$result['password'].'<br>';
}
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}
運(yùn)行結(jié)果為:
1 107lab e10adc3949ba59abbe56e057f20f883e 4 admin 123456 5 admin 123456
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫(kù)操作技巧大全》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
smarty模板嵌套之include與fetch性能測(cè)試
使用模板時(shí)難免要碰到模板嵌套的時(shí)候,大家都知道有兩種方法可以實(shí)現(xiàn),以下是個(gè)人早期的一些使用感受。2010-12-12
PHP常用設(shè)計(jì)模式之委托設(shè)計(jì)模式
委托是對(duì)一個(gè)類的功能進(jìn)行擴(kuò)展和復(fù)用的方法。它的做法是:寫一個(gè)附加的類提供附加的功能,并使用原來(lái)的類的實(shí)例提供原有的功能,接下來(lái)通過(guò)本文給大家介紹PHP委托設(shè)計(jì)模式實(shí)例詳解,感興趣的朋友一起學(xué)習(xí)吧2016-02-02
隱藏Nginx或Apache以及PHP的版本號(hào)的方法
這篇文章主要介紹了隱藏Nginx或Apache以及PHP的版本號(hào)的方法,主要用來(lái)防止針對(duì)性的漏洞攻擊,需要的朋友可以參考下2016-01-01
關(guān)于URL最大長(zhǎng)度限制的相關(guān)資料查證
這篇文章主要介紹了關(guān)于URL最大長(zhǎng)度限制的相關(guān)資料查證,這里記錄一下,方便以后使用。2014-12-12

