PHP里的PDO

一、 PDO類的構造方法:

---------------------------------------------------------

PDO __construct( string dsn

??????????????????????????? [, string username

??????????????????????????? [, string password

???????????????????????????? [, array driver_options]]] );

其中:dsn數(shù)據(jù)庫連接信息如“mysql:host=localhost;dbname=庫名”

dsn的格式:”驅動名:host=主機名;dbname=庫名“

username:用戶名

password:密碼

driver_options:配置選項:

?如: PDO::ATTR_PERSISTENT=>true,是否開啟持久鏈接

??????????? *PDO::ATTR_ERRMODE=>錯誤處理模式:(可以是以下三個)(3)

??????????? PDO::ERRMODE_SILENT:不報錯誤(忽略)(0)

?????????? PDO::ERRMODE_WARNING:以警告的方式報錯(1)

?????????? *PDO::ERRMODE_EXCEPTION:以異常的方式報錯(推薦使用)。(2)

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

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

其他方法:

--------------------------------------------------------

1. query($sql); 用于執(zhí)行查詢SQL語句。返回PDOStatement對象

2. exec($sql);? 用于執(zhí)行增、刪、改操作,返回影響行數(shù);

3. getAttribute(); 獲取一個"數(shù)據(jù)庫連接對象"屬性。

4. setAttribute(); 設置一個"數(shù)據(jù)庫連接對象"屬性。

5. beginTransaction 開啟一個事物(做一個回滾點)

6. commit 提交事務

7. rollBack 事務回滾操作。

8. errorCode 獲取錯誤碼

9. errorInfo 獲取錯誤信息

10.lastInsertId? 獲取剛剛添加的主鍵值。

11.prepare 創(chuàng)建SQL的預處理,返回PDOStatement對象

12.quote 為sql字串添加單引號。



預處理對象PDOStatement對象:

=============================================

我們可以通過PDO的方法來獲取PDOStatement:

1.PDO的query(查詢sql)方法獲取,用于解析結果集

2.PDO的prepare(SQL)方法獲取,用于處理參數(shù)式sql并執(zhí)行操作。

PDOstatement對象的方法:

----------------------------------------------------------------

1、fetch() 返回結果集的下一行,結果指針下移,到頭返回false 。

?????????????? 參數(shù): PDO::FETCH_BOTH (default)、:索引加關聯(lián)數(shù)組模式

??????????????????????????? PDO::FETCH_ASSOC、 ? :關聯(lián)數(shù)組模式

??????????????????????????? PDO::FETCH_NUM、 ? :索引數(shù)組模式

??????????????????????????? PDO::FETCH_OBJ、 ? :對象模式

??????????????????????????? PDO::FETCH_LAZY ? :所有模式(SQL語句和對象)

2、fetchAll() 通過一次調用返回所有結果,結果是以數(shù)組形式保存

????????????? 參數(shù):PDO::FETCH_BOTH (default)、

???????????????????????? PDO::FETCH_ASSOC、

???????????????????????? PDO::FETCH_NUM、

???????????????????????? PDO::FETCH_OBJ、

???????????????????????? PDO::FETCH_COLUMN表示取指定某一列,

???????? 如:$rslist = $stmt->fetchAll(PDO::FETCH_COLUMN,2);取第三列

3、execute() 負責執(zhí)行一個準備好了的預處理語句

4. fetchColumn()返回結果集中下一行某個列的值

5. setFetchMode()設置需要結果集合的類型

6. rowCount()? 返回使用增、刪、改、查操作語句后受影響的行總數(shù)

7. setAttribute()為一個預處理語句設置屬性

8. getAttribute()獲取一個聲明的屬性

9. errorCode() 獲取錯誤碼

10. errorInfo() 獲取錯誤信息

11. bindParam() 將參數(shù)綁定到相應的查詢占位符上

?????? bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int $length [, mixed $driver_options ]]] ) 其中:$parameter:占位符名或索引偏移量 &$variable:參數(shù)的值,需要按引用傳遞也就是必須放一個變量

????? 其中參數(shù):$data_type:數(shù)據(jù)類型PDO::PARAM_BOOL/PDO::PARAM_NULL/PDO::PARAM_INT/PDO::PARAM_STR/

??? PDO::PARAM_LOB/PDO::PARAM_STMT/PDO::PARAM_INPUT_OUTPUT

???? $length:指數(shù)據(jù)類型的長度 $driver_options:驅動選項。

12. bindColumn() 用來匹配列名和一個指定的變量名,這樣每次獲取各行記錄時,會自動將相應的值賦給變量。

13. bindValue() 將一值綁定到對應的一個參數(shù)中

14. nextRowset() 檢查下一行集

15. columnCount() 在結果集中返回列的數(shù)目

16. getColumnMeta() 在結果集中返回某一列的屬性信息

17. closeCursor() 關閉游標,使該聲明再次執(zhí)行

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

1.insert into stu(id,name) value(?,?); //?號式(適合參數(shù)少的)

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

在PDO中為參數(shù)式SQL語句賦值有三種:

1.使用數(shù)組

$stmt->execute(array("lamp1404","qq2"));

$stmt->execute(array("id"=>"lamp1404","name"=>"qq2"));

2.使用方法單個賦值

$stmt->bindValue(1,"lamp1901");

$stmt->bindValue(2,"qq2");

$stmt->execute();

$stmt->bindValue(":id","lamp1901",PDO::PARAM_STR); //帶指定類型

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

$stmt->execute();

3. 使用方法綁定變量

$stmt->bindParam(":id",$id);

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

$id="lamp1401";

$name="qq2";

$stmt->execute();

事務處理

-----------------------------------------------

事務:將多條sql操作(增刪改)作為一個操作單元,要么都成功,要么都失敗。-----

4.? PDO對事務的支持

??? 第一:被操作的表必須是innoDB類型的表(支持事務)

????????????? MySQL常用的表類型:MyISAM(非事務)增刪改速度快、InnodB(事務型)安全性高

????????????? //更改表的類型為innoDB類型

???????? mysql> alter table stu engine=innodb;

???????????????? Query OK, 29 rows affected (0.34 sec)

???????????????? Records: 29? Duplicates: 0? Warnings: 0

??????? //查看表結構

??????????? mysql> show create table stu\G;

?????? 第二:使用PDO就可以操作數(shù)據(jù)庫了

??????? 使用到了PDO中的方法:

??????????? beginTransaction 開啟一個事物(做一個回滾點)

??????????? commit 提交事務

??????????? rollBack 事務回滾操作。

??????????? 使用情況:當做多條sql語句處理時(增刪改),要求是都必須成功。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • pdo類PDO是一個“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比,...
    桖辶殤閱讀 972評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,652評論 18 399
  • JDBC簡介 SUN公司為了簡化、統(tǒng)一對數(shù)據(jù)庫的操作,定義了一套Java操作數(shù)據(jù)庫的規(guī)范,稱之為JDBC。JDBC...
    奮斗的老王閱讀 1,635評論 0 51
  • 本節(jié)介紹Statement接口及其子類PreparedStatement和CallableStatement。 它...
    zlb閱讀 1,242評論 0 0
  • 1 十一月份,我在一個群里聽到兩三位資深書評人說美國宅男斯蒂芬.蓋斯寫的《微習慣》很不錯,于是我就果斷入手了。 很...
    靈林玖玖閱讀 6,842評論 221 339

友情鏈接更多精彩內容