PHP系列(十二)數(shù)據(jù)庫(kù)抽象層pdo

1、數(shù)據(jù)庫(kù)抽象層pdo

創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為凌源企業(yè)提供專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站,凌源網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

(1)、PDO(php data object)擴(kuò)展類(lèi)庫(kù)為php訪問(wèn)數(shù)據(jù)庫(kù)定義了輕量級(jí)的、一致性的接口它可以支持MySQL,postgresql,oracle,mssql等多種數(shù)據(jù)庫(kù)

(2). PDO的安裝

編輯php.ini文件:

– extension=php_pdo.dll

– extension=php_pdo_mysql.dll

重啟apache服務(wù):

– httpd–k restart

打開(kāi)phpinfo.php查看是否有pdo

 

2、創(chuàng)建pdo對(duì)象

Oracle庫(kù)

/*連接如果失敗,使用異常處理模式進(jìn)行捕獲 */

try{

$dbh = newPDO("OCI:dbname=accounts;charset=UTF-8", "scott","tiger");

}catch(PDOException$e) {

echo "數(shù)據(jù)庫(kù)連接失?。?" .$e->getMessage();

}

Mysql庫(kù)

$dsn ='mysql:dbname=testdb;host=127.0.0.1'; //連接MySQL數(shù)據(jù)庫(kù)的DSN

$user = 'dbuser';//MySQL數(shù)據(jù)庫(kù)的用戶名

$password ='dbpass'; //MySQL數(shù)據(jù)庫(kù)的密碼

try {

$dbh = newPDO($dsn, $user, $password);

} catch(PDOException $e) {

echo '數(shù)據(jù)庫(kù)連接失敗: ' . $e->getMessage();

}

 

Php.ini配置文件中[pdo]下在加入下面文字

Pdo.dsn.ssw=”mysql:host=localhosot;dbname=malldb”;

try {

$dbh = new PDO(ssw,root, sswqzx);

} catch(PDOException $e) {

echo '數(shù)據(jù)庫(kù)連接失?。?' . $e->getMessage();

}

 

//設(shè)置持久連接的選項(xiàng)數(shù)組作為最后一個(gè)參數(shù),可以一起設(shè)置多個(gè)元素

$opt =array(PDO::ATTR_PERSISTENT => true);

try {

$db = newPDO('mysql:host=localhost;dbname=test','dbuser','passwrod',$opt);

} catch(PDOException $e) {

echo "數(shù)據(jù)庫(kù)連接失敗: " .$e->getMessage();

}

 

3、PDO與連接有關(guān)的選項(xiàng)

         try {

                   $pdo=new  PDO("mysql:host=localhost;dbname=malldb","root","123456",array(PDO::ATTR_AUTOCOMMIT=>false,PDO::ATTR_PERSISTENT=>1 ));

         }catch(PDOException $e) {

                   echo "數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

//var_dump($pdo);

//      $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,false);

 

         echo "<br>PDO是否關(guān)閉自動(dòng)提交功能:".$pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);

         echo "<br>當(dāng)前PDO的錯(cuò)誤處理的模式:". $pdo->getAttribute(PDO::ATTR_ERRMODE);

         echo "<br>表字段字符的大小寫(xiě)轉(zhuǎn)換: ".$pdo->getAttribute(PDO::ATTR_CASE);

         echo "<br>與連接狀態(tài)相關(guān)特有信息: ".$pdo->getAttribute(PDO::ATTR_CONNECTION_STATUS);

         echo "<br>空字符串轉(zhuǎn)換為SQL的null:". $pdo->getAttribute(PDO::ATTR_ORACLE_NULLS);

         echo "<br>應(yīng)用程序提前獲取數(shù)據(jù)大小:".$pdo->getAttribute(PDO::ATTR_PERSISTENT);

         echo "<br>與數(shù)據(jù)庫(kù)特有的

         echo "<br>數(shù)據(jù)庫(kù)服務(wù)器版本號(hào)信息:".$pdo->getAttribute(PDO::ATTR_SERVER_VERSION);

         echo "<br>數(shù)據(jù)庫(kù)客戶端版本號(hào)信息:".$pdo->getAttribute(PDO::ATTR_CLIENT_VERSION);

 

4、PDO的錯(cuò)誤處理模式

/*

setAttribute();

PDO::ATTR_ERRMODE;

1、默認(rèn)的錯(cuò)誤模式(不提示、我們看到問(wèn)題、被忽視)

2、警告模式:PDO::ERRMODE_WARNING

3、異常的模式:PDO::ERRMODE_EXCEPTION

*/

 

try(

//創(chuàng)建對(duì)象

$pdo = newPDO("mysql:host=localhost;dbname=malldb","root","sswqzx");

//設(shè)置錯(cuò)誤使用異常的模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

)catch(PDOException $e){

         echo"數(shù)據(jù)庫(kù)鏈接失敗".$e->getMessage();

         exit;

}

 

try(

//使用PDO中的方法執(zhí)行語(yǔ)句

$affected_rows = $pdo ->exec("delete from hello");

)catch(PDOException $e){

echo "錯(cuò)誤".$e->getMessage();

}

 

5、使用PDO執(zhí)行SQL語(yǔ)句

代碼1:

/*

PDO中執(zhí)行SQL語(yǔ)句的方法有二個(gè)主要的:

1、exec()用來(lái)處理非結(jié)果集的: insert updatedelete create ....

返回影響的函數(shù)

2、query()用來(lái)處理有結(jié)果集的語(yǔ)句: select descshow

 

set naees utf8;

$pdo -> query("set namesutf8");

$pdo -> exec("set namesutf8");

*/

 

try{

//創(chuàng)建對(duì)象

$pdo = new PDO("mysql:host=localhost;dbname=malldb","root","sswqzx");

//設(shè)置錯(cuò)誤使用異常的模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

}catch(PDOException $e){

         echo"數(shù)據(jù)庫(kù)鏈接失敗".$e->getMessage();

         exit;

}

 

try{

//使用PDO中的方法執(zhí)行語(yǔ)句

$affected_rows = $pdo ->exec("insert into user(name,pass,sex,age,email)values('aa','bb','cc','20','ee@qq.com')");

echo $affected_rows."<br>";

echo $pdo->lastinsertid();

}catch(PDOException $e){

echo "錯(cuò)誤".$e->getMessage();

}

代碼2:

<?php

try{

$dbh = newPDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd');

}catch(PDOException$e){

exit('數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage());

}

$query =“UPDATE contactInfo SET phone=‘15801680168’ where name=‘高某某’”;

//使用exec()方法可以執(zhí)行INSERT、UPDATE和DELETE等

$affected =$dbh->exec($query);

if($affected){

echo '數(shù)據(jù)表contactInfo中受影響的行數(shù)為:'.$affected;

}else{

print_r($dbh->errorInfo());

}

代碼3:

<?php

$dbh = newPDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd');

$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$query =

"SELECT name,phone, email FROM contactInfo WHERE departmentId='D01'";

try {

//執(zhí)行SELECT查詢,并返回PDOstatement對(duì)象              

$pdostatement =$dbh->query($query);

echo "一共從表中獲取到".$pdostatement->rowCount()."條記錄:\n";

foreach($pdostatement as $row) {//從PDOstatement對(duì)象中遍歷結(jié)果

echo $row['name'] ."\t"; //輸出從表中獲取到的聯(lián)系人的名字

echo $row['phone']. "\t"; //輸出從表中獲取到的聯(lián)系人的電話

echo $row['email']. "\n";//輸出從表中獲取到的聯(lián)系人的電子郵件

}

} catch(PDOException $e) {

echo$e->getMessage();

}

6、PDO事務(wù)處理

MySQL的事務(wù)處理

事務(wù):將多條sql操作(增刪改)作為一個(gè)操作單元,要

么都成功,要么都失敗。

MySQL對(duì)事務(wù)的支持:

–被操作的表必須是innoDB類(lèi)型的表(支持事務(wù))

– MySQL常用的表類(lèi)型:MyISAM(非事務(wù))增刪改速度快、

InnodB(事務(wù)型)安全性高

–更改表的類(lèi)型為innoDB類(lèi)型

mysql> altertable stu engine=innodb;

Query OK, 29 rowsaffected (0.34 sec)

Records: 29Duplicates: 0 Warnings: 0

mysql> showcreate table stu\G; //查看表結(jié)構(gòu)

事務(wù)處理

Mysql> set autocommit = 0;

mysql>start transaction;

Mysql>commit;

Mysql>roolback;

7、構(gòu)建事務(wù)處理的應(yīng)用程序

開(kāi)啟一次事務(wù):

– $pdo->beginTransaction();

提交一次事務(wù):

– $pdo->commit();

回滾一次事務(wù):

– $pdo->rollback();

注意如下設(shè)置:

1.$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);

2.$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);

代碼:

<?php

/*

 * PDO中執(zhí)行SQL語(yǔ)句的方法有兩個(gè)主要的:

 *

 *    1.  exec()  用來(lái)處理非結(jié)果集的  insert update deletecreate ....

 *

 *      返回影響的函數(shù)

 *

 *      如果是插入語(yǔ)句可以使用lastinsertid()方法獲取最后自動(dòng)插入id

 *

 *

 *    2.  query()  用來(lái)處理有結(jié)果集的語(yǔ)句  select   desc show

 *

 *   返回來(lái)的是 PDOStatement類(lèi)的對(duì)象,再通過(guò)這個(gè)類(lèi)的方法,獲取結(jié)果。也可以直接foreach遍歷獲取結(jié)果(但不常用)

 *

 *    setnames utf8;

 *

 *   $pdo -> query("set names utf8");

 *   $pdo -> exec("set names utf8");

 */

 

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   //關(guān)閉自動(dòng)提交

                   $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                   //開(kāi)啟一個(gè)事務(wù)

                   $pdo-> beginTransaction();

 

                   $price= 50;

                   //妹子轉(zhuǎn)出50元

                   $affected_rows= $pdo-> exec("update demo set ye=ye-{$price} where id=1");

 

                   if($affected_rows> 0) {

                            echo"妹子轉(zhuǎn)出{$price}元成功!<br>";

                   }else {

                            thrownew PDOException("妹子轉(zhuǎn)出失??!<br>");

                   }

 

                   //張三會(huì)收到50元

                   $affected_rows= $pdo-> exec("update demo set ye=ye+{$price} where id=3");

 

                   if($affected_rows){

                            echo"張三收到{$price}元成功!";

                   }else{

                            thrownew PDOException("張三收入失??!<br>");

                   }

 

        

                   echo"交易成功!<br>";

 

                  //提交以上的操作

                   $pdo->commit();     

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

                   echo"交易失敗!<br>";

                   //撤銷(xiāo)所有操作

                   $pdo-> rollback();

         }

 

         //運(yùn)行完成以后, 最后開(kāi)啟自動(dòng)提交

         $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);

8、使用PDO準(zhǔn)備語(yǔ)句并執(zhí)行語(yǔ)句

得到pdo預(yù)處理對(duì)象的方法:

$sql=“select * from user order by id”;

$sth=$pdo->prepare($sql);

以上代碼中的$sth即為預(yù)處理對(duì)象

在PDO中參數(shù)式的SQL語(yǔ)句有兩種(預(yù)處理sql):

1.insert intostu(id,name) value(?,?); //?號(hào)式(適合參數(shù)少的)

2.insert intostu(id,name) value(:id,:name);//別名式(適合參數(shù)多的)

代碼1:

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                   //給數(shù)據(jù)庫(kù)管理系統(tǒng)并直接執(zhí)行

                   //$pdo-> query("select * from users");

                  

                   //只是將這個(gè)語(yǔ)句放到服務(wù)器上(數(shù)據(jù)庫(kù)管理系統(tǒng))上, 編寫(xiě)后等待,沒(méi)有執(zhí)行

                   $stmt= $pdo -> prepare("insert into users(name, pass, age, sex, email)values(?, ?, ?, ?, ?)");

 

                   //綁定參數(shù)(?),將問(wèn)號(hào)和一個(gè)變量關(guān)聯(lián)起來(lái)

                   $stmt-> bindParam(1, $name);

                   $stmt-> bindParam(2, $pass);

                   $stmt-> bindParam(3, $age);

                   $stmt-> bindParam(4, $sex);

                   $stmt-> bindParam(5, $email);

 

                   //給變量一個(gè)值, 就會(huì)給準(zhǔn)好的語(yǔ)句中的對(duì)應(yīng)?一個(gè)值

                   $name= "admin";

                   $pass= "hello";

                   $age= 100;

                   $sex= "nnn";

                   $email= "aaa@bbb.com";

                   //執(zhí)行上面在數(shù)據(jù)庫(kù)系統(tǒng)中準(zhǔn)備好的語(yǔ)句

                   $stmt-> execute();

        

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

代碼2:

        try {

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失敗:".$e->getMessage();

                   exit;

         }

 

 

         try{

                   //給數(shù)據(jù)庫(kù)管理系統(tǒng)并直接執(zhí)行

                   //$pdo-> query("select * from users");

                  

                   //只是將這個(gè)語(yǔ)句放到服務(wù)器上(數(shù)據(jù)庫(kù)管理系統(tǒng))上, 編寫(xiě)后等待,沒(méi)有執(zhí)行

                   $stmt= $pdo -> prepare("insert into users(name, pass, age, sex, email)values(:name, :pass, :age, :sex, :email)");

 

                   //綁定參數(shù)(?),將問(wèn)號(hào)和一個(gè)變量關(guān)聯(lián)起來(lái)

                   $stmt-> bindParam("name", $name, PDO::PARAM_STR);

                   $stmt-> bindParam("pass", $pass, PDO::PARAM_STR);

                   $stmt-> bindParam("age", $age, PDO::PARAM_INT);

                   $stmt-> bindParam("sex", $sex, PDO::PARAM_STR);

                   $stmt-> bindParam("email", $email, PDO::PARAM_STR);

 

                   //給變量一個(gè)值, 就會(huì)給準(zhǔn)好的語(yǔ)句中的對(duì)應(yīng)?一個(gè)值

                   $name= "admin1";

                   $pass= "hello1";

                   $age= 1001;

                   $sex= "nnn1";

                   $email= "aaa@bbb.com1";

                   //執(zhí)行上面在數(shù)據(jù)庫(kù)系統(tǒng)中準(zhǔn)備好的語(yǔ)句

                   $stmt-> execute();

        

 

 

                  //給變量一個(gè)值, 就會(huì)給準(zhǔn)好的語(yǔ)句中的對(duì)應(yīng)?一個(gè)值

                   $name= "admin2";

                   $pass= "hello2";

                   $age= 1002;

                   $sex= "nnn2";

                   $email= "aaa@bbb.com2";

                   //執(zhí)行上面在數(shù)據(jù)庫(kù)系統(tǒng)中準(zhǔn)備好的語(yǔ)句

                   $stmt-> execute();                      

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

代碼3:

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                   //給數(shù)據(jù)庫(kù)管理系統(tǒng)并直接執(zhí)行

                   //$pdo-> query("select * from users");

                  

                   //只是將這個(gè)語(yǔ)句放到服務(wù)器上(數(shù)據(jù)庫(kù)管理系統(tǒng))上, 編寫(xiě)后等待,沒(méi)有執(zhí)行

              //  $stmt = $pdo -> prepare("insert into users(name, pass, age, sex,email) values(:name, :pass, :age, :sex, :email)");

                $stmt = $pdo -> prepare("insertinto users(name, pass, age, sex, email) values(?, ? ,?, ?, ?)");

 

 

                $stmt -> execute(array("jone",'123456', 18, 'nv', 'aa@bb.com'));       

                $stmt -> execute(array("jone2",'123456', 18, 'nv', 'aa@bb.com'));       

                $stmt -> execute(array("jone22",'123456', 18, 'nv', 'aa@bb.com'));       

 

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

代碼4:

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失敗:".$e->getMessage();

                   exit;

         }

 

 

         try{

                   //給數(shù)據(jù)庫(kù)管理系統(tǒng)并直接執(zhí)行

                   //$pdo-> query("select * from users");

                  

                   //只是將這個(gè)語(yǔ)句放到服務(wù)器上(數(shù)據(jù)庫(kù)管理系統(tǒng))上, 編寫(xiě)后等待,沒(méi)有執(zhí)行

$stmt = $pdo -> prepare("insertinto users(name, pass, age, sex, email) values(:name, :pass, :age, :sex,:email)");

// $stmt = $pdo -> prepare("insertinto users(name, pass, age, sex, email) values(?, ? ,?, ?, ?)");

$stmt ->execute(array("name"=>"feng","pass"=>"abc123#", "age"=>28,"sex"=>"nan","email"=>"aaa@bbb.com"));       

    

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

代碼5:

 

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                   //給數(shù)據(jù)庫(kù)管理系統(tǒng)并直接執(zhí)行

                   //$pdo-> query("select * from users");

                  

                   //只是將這個(gè)語(yǔ)句放到服務(wù)器上(數(shù)據(jù)庫(kù)管理系統(tǒng))上, 編寫(xiě)后等待,沒(méi)有執(zhí)行

                 $stmt = $pdo -> prepare("insertinto users(name, pass, age, sex, email) values(:name, :pass, :age, :sex,:email)");

               // $stmt = $pdo ->prepare("insert into users(name, pass, age, sex, email) values(?, ? ,?, ?,?)");

 

 

                $stmt -> execute($_GET);               

               

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

9、PDO的預(yù)處理查詢

代碼1:

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                  

                   $stmt= $pdo -> prepare("select id, name, age, sex, email from users where id> ? and id < ?");

                   $stmt-> execute(array(500, 800));

 

        

                   foreach($stmtas $row) {

                            print_r($row);

                            echo'<br>';

                   }

 

                   //mysql_fetch_array()   mysql_fetch_rows  mysql_fetch_array()

/*

                   echo'<table border="1" width=800>';

                   while(list($id,$name, $age, $sex, $email) = $stmt -> fetch(PDO::FETCH_NUM)) {

                            echo'<tr>';

                            echo'<td>'.$id.'</td>';

                            echo'<td>'.$name.'</td>';

                            echo'<td>'.$age.'</td>';

                            echo'<td>'.$sex.'</td>';

                            echo'<td>'.$email.'</td>';

                            echo'</tr>';

                   }

 

                   echo'</table>';

 */           

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

代碼2:

 

try {

                   //創(chuàng)建對(duì)象

                  $pdo = newPDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失敗:".$e->getMessage();

                   exit;

         }

 

 

         try{

                  

                   $stmt= $pdo -> prepare("select id, name, age, sex, email from users where id> ? and id < ?");

                   $stmt-> execute(array(500, 800));

 

 

                   //可以設(shè)置結(jié)果的模式, 以下的代碼使用fetch()或fetchAll()都是使用這個(gè)方面設(shè)置的數(shù)組的格式

                   $stmt-> setFetchMode(PDO::FETCH_NUM);

 

 

                   echo'<pre>';

 

                   print_r($stmt->fetchAll());

 

                   echo'</pre>';

 

                   //mysql_fetch_array()   mysql_fetch_rows mysql_fetch_array()

/*

                   echo'<table border="1" width=800>';

                   while(list($id,$name, $age, $sex, $email) = $stmt -> fetch(PDO::FETCH_NUM)) {

                            echo'<tr>';

                            echo'<td>'.$id.'</td>';

                            echo'<td>'.$name.'</td>';

                            echo'<td>'.$age.'</td>';

                            echo'<td>'.$sex.'</td>';

                            echo'<td>'.$email.'</td>';

                            echo'</tr>';

                   }

 

                   echo'</table>';

 */           

 

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

代碼:

         try{

                   //創(chuàng)建對(duì)象

                   $pdo= new PDO("mysql:host=localhost;dbname=malldb", "root","123456");

                   //設(shè)置錯(cuò)誤使用異常的模式

                   $pdo-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                   $pdo-> query("set names utf8");

         }catch(PDOException$e) {

                   echo"數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();

                   exit;

         }

 

 

         try{

                  

                   $stmt= $pdo -> prepare("insert into users(name, pass, age, sex,email)values(?, ? ,? ,? ,?)");

                   $stmt-> execute(array('111', '222', 333, '444', '555'));

 

                   //獲取數(shù)據(jù)結(jié)果中的行數(shù), 或如果是影響函數(shù)的語(yǔ)句執(zhí)行則獲取的是影響行數(shù)

                   echo$stmt->rowCount();

 

                   echo'<br>';

                   //如何獲取最后一個(gè)自動(dòng)增漲的ID呢?

                   echo$pdo -> lastInsertId();

         }catch(PDOException$e) {

                   echo"錯(cuò)誤:".$e->getMessage();

         }

 

網(wǎng)站標(biāo)題:PHP系列(十二)數(shù)據(jù)庫(kù)抽象層pdo
當(dāng)前網(wǎng)址:http://muchs.cn/article8/geship.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、用戶體驗(yàn)自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、App開(kāi)發(fā)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作