PDO--PHP Data Objects

來源:互聯網
上載者:User

標籤:pdo   php - pdo操作   

PDO的環境配置:開啟支援PDO 在php.ini設定檔中開啟:extension=php_pdo.dllextension=php_pdo_mysql.dll在PDO操作中涉及到類:PDO、PDOStatement(預先處理對象)、PDOException(異常類)一、 PDO類的構造方法:---------------------------------------------------------  PDO __construct( string dsn [, string username [, string password [, array driver_options]]] ); 其中:dsn資料庫連接資訊如“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); 用於執行查詢SQL語句。返回PDOStatement對象2. exec($sql);  用於執行增、刪、改操作,返回影響行數;3. getAttribute(); 擷取一個"資料庫連接對象"屬性。4. setAttribute(); 設定一個"資料庫連接對象"屬性。5. beginTransaction 開啟一個事物(做一個復原點)6. commit提交事務7. rollBack交易回復操作。 8. errorCode擷取錯誤碼   9. errorInfo擷取錯誤資訊   10.lastInsertId  擷取剛剛添加的主索引值。11.prepare建立SQL的預先處理,返回PDOStatement對象12.quote為sql字串添加單引號。預先處理對象PDOStatement對象:=============================================我們可以通過PDO的方法來擷取PDOStatement: 1.PDO的query(查詢sql)方法擷取,用於解析結果集 2.PDO的prepare(SQL)方法擷取,用於處理參數式sql並執行操作。PDOstatement對象的方法:----------------------------------------------------------------1、fetch() 返回結果集的下一行,結果指標下移,到頭返回false 。  參數: PDO::FETCH_BOTH (default)、:索引加關聯陣列模式       PDO::FETCH_ASSOC、   :關聯陣列模式        PDO::FETCH_NUM、   :索引數組模式PDO::FETCH_OBJ、   :對象模式PDO::FETCH_LAZY   :所有模式(SQL語句和對象)2、fetchAll() 通過一次調用返回所有結果,結果是以數組形式儲存      參數: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() 負責執行一個準備好了的預先處理語句 4. fetchColumn()返回結果集中下一行某個列的值5. setFetchMode()設定需要結果集合的類型6. rowCount()  返回使用增、刪、改、查動作陳述式後受影響的行總數7. setAttribute()為一個預先處理語句設定屬性8. getAttribute()擷取一個聲明的屬性9. errorCode() 擷取錯誤碼10. errorInfo() 擷取錯誤資訊11. bindParam() 將參數綁定到相應的查詢預留位置上    bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type [, int $length [, mixed $driver_options ]]] ) 其中: $parameter:預留位置名或索引位移量 &$variable:參數的值,需要按引用傳遞也就是必須放一個變數    其中參數:$data_type:資料類型PDO::PARAM_BOOL/PDO::PARAM_NULL/PDO::PARAM_INT/PDO::PARAM_STR/     PDO::PARAM_LOB/PDO::PARAM_STMT/PDO::PARAM_INPUT_OUTPUT         $length:指資料類型的長度 $driver_options:驅動選項。12. bindColumn() 用來匹配列名和一個指定的變數名,這樣每次擷取各行記錄時,會自動將相應的值賦給變數。13. bindValue() 將一值綁定到對應的一個參數中14. nextRowset() 檢查下一行集15. columnCount() 在結果集中返回列的數目16. getColumnMeta() 在結果集中返回某一列的屬性資訊17. closeCursor() 關閉遊標,使該聲明再次執行在PDO中參數式的SQL語句有兩種(預先處理sql):   1.insert into stu(id,name) value(?,?);//?號式(適合參數少的)   2.insert into stu(id,name) value(:id,:name);// 別名式(適合參數多的)在PDO中為參數式SQL語句賦值有三種:   1.使用數組  $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就可以操作資料庫了使用到了PDO中的方法:beginTransaction 開啟一個事物(做一個復原點)commit提交事務rollBack交易回復操作。 使用方式:當做多條sql語句處理時(增刪改),要求是都必須成功。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.