1. 程式人生 > >PHP::PDO互動資料函式封裝(一)

PHP::PDO互動資料函式封裝(一)

PDO資料連線封裝

<?php

$pdo = null;
function get_pdo()

{

  global $pdo;                             //  突破作用域

  if (is_object($pdo) == false) {           // 當$pdo 為 pdo物件時 返回$pdo; 否者建立$PDO 

    $conn = 'mysql:host=localhost; port=3306; dbname=lx; ';

    $usr = 'root';

    $pwd = 'root';

    //1.2 建立PDO物件
$pdo = new PDO($conn, $usr, $pwd); // 連線資料庫 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //設定屬性 丟擲異常 $pdo->query('set names utf8'); // 設定編碼 } return $pdo; }
// 增、刪、改 語句函式封裝
function get_count($get_pdo, $g)

{

  return $get_pdo->exec
($g); //返回受影響行數 }
// 查詢語句 函式封裝
function get_result($get_pdo, $g)

{

  $cx = $get_pdo->query($g);    			//  查詢語句

  return $cx->fetchAll(PDO::FETCH_ASSOC);                                //返回結果;

}
//繫結資料的 函式封裝
function show($pdo, $query, $data)

{

  {$item = $pdo->prepare
($query); // 預防SQL注入 }// 建立預定義 foreach ($data as $key => $val) {$item->bindvalue($key + 1, $val); } $item->execute(); return $item; }
// 突破作用域的簡化 資料繫結封裝
function get_stmt($sql, array $row = [])

{

  try {$pdo = get_pdo();$item = $pdo->prepare($sql);foreach ($row as $key => $val) {// $item->bindvalue(":$key", $val);               //繫結陣列的 標記為KEY,值為vaL;$item->bindvalue($key + 1, $val);}$item->execute();return $item;

  } catch (PDOException $e) {echo "你的資料有錯誤:" . $e->getMessage();   //錯誤異常處理return false;

  }

};
// 封裝對資料的輸出方式與型別
function get_open($sql, array $row = [], $dType = 2, $rType = 'array')

{

  $item = get_stmt($sql, $row);

  $item->execute();

  switch ($dType) {          // 匹配資料的輸出方式

    case 0:

      return $item->rowcount();

    case 1:

      return $item->fetch($rType == 'array' ? PDO::FETCH_ASSOC : PDO::FETCH_OBJ);

    case 2:

      return $item->fetchall($rType == 'array' ? PDO::FETCH_ASSOC : PDO::FETCH_OBJ);

  }

  return $item;

}