exec()方法
exec()方法返回執(zhí)行后受影響行數(shù),語法如下:
int?PDO::exec(string?statement)
參數(shù)statement是要執(zhí)行的sql語句。該方法返回執(zhí)行查詢時(shí)受影響的行數(shù),通常情況下用于INSERT,DELETE和UPDATE語句中。
例如:
$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語句 $res=$pdo->exec($query);//執(zhí)行添加語句并返回受影響行數(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é)果集,語法如下
PDOStatement ?PDO::query(string?statement)
參數(shù)statement 是要執(zhí)行的SQL語句。它返回的是一個(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é)果,可以通過foreach語句完成循環(huán)輸出
例如:
foreach($res?as?$val){ echo?$val['username']."----".$val['password'].'<br>'; }
運(yùn)行結(jié)果為:
107lab----e10adc3949ba59abbe56e057f20f883e admin----123456
說明:如果要查看foreach的詳細(xì)用法請(qǐng)查看:http://www.php.cn/
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語句 $res=$pdo->query($query);//執(zhí)行添加語句并返回受影響行數(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語句,只是返回值不同而已。
2、query可以實(shí)現(xiàn)所有exec的功能。
3、當(dāng)把select語句應(yīng)用到 exec 時(shí),總是返回 0
預(yù)處理語句—-prepare()語句和execute()語句
預(yù)處理語句包括prepare()和execute()兩種方法。首先,通過prepare()方法做查詢準(zhǔn)備工作,然后通過execute()方法執(zhí)行查詢,并且還可以通過bindParam()方法來綁定參數(shù)給execute()方法,語法如下:
PDOStatement ?PDO::prepare(string?statement[,array?driver_options]) bool ?PDOStatement::execute([array?input_parameters])
例如:
在PDO中通過預(yù)處理語句prepare()和execute()執(zhí)行SQL查詢語句,并且應(yīng)用while()語句和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語句 ????$res=$pdo->prepare($query);//準(zhǔn)備查詢語句 ????$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)于PDO中獲取結(jié)果集的方法正在創(chuàng)作階段,敬請(qǐng)期待。
?以上就是PDO中執(zhí)行SQL語句的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.php.cn)!