例項 php中PDO方式實現資料庫的增刪改查

2021-12-29 20:46:05 字數 3270 閱讀 6620

整理的比較容易理解的pdo操作例項,注意,需要開啟php的pdo支援,php5.1以上版本支援實現資料庫連線單例化,有三要素 靜態變數、靜態例項化方法、私有建構函式 dpdo.php

//pdo操作類

//author

class dpdo

//私有 空轉殖函式 防止被轉殖

private function __clone(){}

//靜態 例項化函式 返回乙個pdo物件

static public function instance($dsn, $dbuser, $dbpwd, $longlink = false)

return $singleton[$singindex]->pdo;

}

private function connect()else

$this->pdo->query('set names utf-8');

} catch(pdoexception $e)

}}用於處理字段對映,使用pdo的字段對映,可以有效避免sql注入

//字段關聯陣列處理, 主要用於寫入和更新資料、同and 或 or 的查詢條件,產生sql語句和對映欄位的陣列

//author

public function fdfields($data, $link = ',', $judge = array(), $aliastable = '')

$sql = trim($sql, $link);

return array($sql, $mapdata);

} //用於處理單個字段處理

public function fdfield($field, $value, $judge = '=', $premap = 'cn', $aliastable = '')

//使用剛方法可以便捷產生查詢條件及對應資料陣列

public function fdcondition($condition, $mapdata) else if (is_array($condition)) else

}if(is_array($condition['data'])) }}

return array($where, $mapdata);

}增刪改查的具體實現db.php

//資料庫的遍歷

//author

public function fetch($sql, $searchdata = array(), $datamode = pdo::fetch_assoc, $pretype = array(pdo::attr_cursor => pdo::cursor_fwdonly)) else

}

public function fetchall($sql, $searchdata = array(), $limit = array(0, 10), $datamode = pdo::fetch_assoc, $pretype = array(pdo::attr_cursor => pdo::cursor_fwdonly)) else

}

public function insert($tablename, $data, $returninsertid = false, $replace = false) else

}

public function update($tablename, $data, $condition, $mapdata = array(), $returnrowcount = true) else

}

public function delete($tablename, $condition, $mapdata = array())

}測試檔案test.php

//pdo操作類-測試php示例

//author

header("content-type: text/html; charset=utf-8");

define('app_dir', dirname(__file__));

if (function_exists('spl_autoload_register')) else }

function autoclass($classname) catch (exception $e)

}$db = new db();

//插入

$indata['a'] = rand(1, 100);

$indata['b'] = rand(1, 1000);

$indata['c'] = rand(1,200) . '.' . rand(1,100);

$ret = $db->insert('a', $indata);

echo '插入' . ($ret ? '成功' : '失敗') . '

';//更新

$upcondata['a'] = 100;

$upconjudge['a'] = '';

list($upconstr, $mapupcondata) = $db->fdfield('b', 200, ' $upconstr,

'data' => $upcondata,

'judge' => $upconjudge,

'link' => 'and'

);$updata['a'] = rand(1, 10);

$updata['b'] = 1;

$updata['c'] = 1.00;

$changerows = $db->update('a', $updata, $condition, $mapupcondata);

echo '更新行數:' . (int) $changerows . '

';//刪除

$delval = rand(1, 10);

list($delcon, $mapdelcon) = $db->fdfield('a', $delval);

$delret = $db->delete('a', $delcon, $mapdelcon);

echo '刪除a=' . $delval . ($delret ? '成功' : '失敗') . '';

//查詢

$data['a'] = '10';

$judge['a'] = '>';

$data['b'] = '400';

$judge['b'] = 'fdfields($data, 'and', $judge);

$mdata = $db->fetch('select * from a where ' . $consql . ' order by `a` desc', $mapcondata);

php封裝pdo例項以及pdo長連線的優缺點

四 pdo部分demo的封裝 最近需要寫指令碼來實現崩潰日誌的入庫,不出所料又是脫離於框架的,那麼行吧,咱們只能自己封裝資料庫相關操作了。博主這裡選擇了封裝pdo運算元據庫相關。眾所周知的,php在早期的時候是帶有mysql擴充套件的,但是後來由於過於古老缺失了mysql的新特性,因此主鍵沒落。從p...

pdo中DNS書寫方式

pdo中dns書寫方式 mssql host localhost dbname testdb sybase host localhost dbname testdb dblib host localhost dbname testdb firebird user john password mypa...

PHP中PDO的MYSQL事務處理例項

事務 transaction 是由查詢和 或更新語句的序列組成。用 begin start transaction 開始乙個事務,rollback 回滾事務,commit 提交事務。在開始乙個事務後,可以有若干個 sql 查詢或更新語句,每個 sql 遞交執行後,還應該有判斷是否正確執行的語句,以確...