PDO知識點合集

PDO是別人寫的「數據庫操做工具類」!mysql

1、PDO鏈接Mysql數據庫sql

$DSN = "mysql:host=服務器地址/名稱;port=端口號;dbname=數據庫名";數據庫

$Opt = array(PDO::MYSQL_ATTR_INIT_COMMAND=>’set names 鏈接編碼’);數組

$pdo = new pdo($DSN, "用戶名", "密碼", $Opt);服務器

$dns = "mysql:host=localhost;port=3306;dbname=test";
$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8");
$pdo = new PDO($dns, "root", "root", $opt);

2、PDO對象經常使用方法工具

  $pdo->query(「返回結果集的sql語句」);返回:結果集或falsefetch

  $pdo->exec(「增刪改的sql語句」); 返回:true或false編碼

其餘操做:spa

$pdo->lastInsertId();   獲取最後添加的id值;code

$pdo->beginTransaction();  開啓一個事務

$pdo->commit()  提交一個事務

$pdo->rollBack();  回滾一個事務;

$pdo->inTransaction();  判斷當前行是否在事務中,返回true/false

$pdo->setAttribute(屬性名,屬性值);  設置pdo對象的屬性值;  舉例:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

3、PDO錯誤處理

默認狀況下,pdo採用「靜默模式」處理錯誤:就是發生了錯誤後,並不提示,而只是返回false。咱們須要在程序中去判斷返回是否爲fale,而後,若是是false,再去「主動」獲取錯誤信息。

設置PDO爲異常模式:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);經過try   catch進行異常捕獲處理

//設置爲異常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try{
    $sql = "deleteee from test where id = 1";
    $pdo->exec($sql);
} catch (Exception $e) {
    echo $e->getCode();
    echo $e->getMessage();
}

4、PDO結果集(PDOStatement)

$stmt = $pdo->query(「select ...... 」);  //這是得到結果集

$stmt->rowCount() ;   //獲得結果集的行數

$stmt->columnCount() ;   //獲得結果集的列數

$stmt->fetch( [返回類型] );   //從結果集中取出「一行」數據;

取出的結果,由其中的「返回類型」來決定,經常使用的有:

PDO::FETCH_ASSOC:表示關聯數組
PDO::FETCH_NUM:表示索引數組
PDO::FETCH_BOTH:表示前兩者皆有,這是默認值
PDO::FETCH_OBJ:表示對象

$stmt->fetchAll([返回類型]);  一次性獲取結果集中的全部數據,返回的是一個二維數組,至關於咱們本身寫的GetRows()

$stmt->fetchColumn( [$i] );  獲取結果集中的「下一行」數據的第$i個字段的值,結果是一個「標量數據」,至關於咱們本身的寫的:GetOneData()

$stmt->fetchObject();

$stmt->errorCode();:  pdo結果集的錯誤代號

$stmt->errorInfo();    pdo結果集的錯誤信息(是一個數組)

$stmt->closeCursor();   關閉結果集(至關於mysql_close()  )

5、PDO預處理

語法1:

$sql = 「select  *  from  tab   where  id = ? 「; //這裏這個「?」就是未給定的數據項;這裏一般叫作「佔位符」    //也能夠是多個問好。

語法2:

$sql = 「select  *  from  tab   where  id = :v1  and  name  =  :v2 「; //這裏這個「:v1」和 「:v2」 就是未給定的數據項;一般這裏叫作「命名參數」;

1,對含預處理語法的sql語句進行「預處理」:

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

2, 對上述預處理的結果對象($stmt)的未賦值數據,進行賦值:

$stmt->bindValue( 數據項1, 值1);

$stmt->bindValue( 數據項2, 值2);

3, 執行執行:

$stmt->execute();

$stmt = $pdo->prepare("insert into test (name, age) values (?, ?)");
$stmt->bindValue(1, "yy");
$stmt->bindValue(2, 19);
$stmt->execute();
$stmt = $pdo->prepare("select * from test where id = :v1");
$stmt->bindValue(":v1", 1);
$stmt->execute();
$arr = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($arr);
相關文章
相關標籤/搜索