PHP::PDO互動資料函式封裝(一)
阿新 • • 發佈:2018-11-15
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;
}