標籤: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語句處理時(增刪改),要求是都必須成功。