PHP數據庫類

<?phpclass Db{//私有靜態屬性存儲實例化對象自身private static $instance;//存儲PDO類的實例化private $pdo;//PDOStatement類private $stmt;//禁止外部實例化對象,鏈接數據庫private function __construct($config,$port,$charset){try{$this->pdo = new PDO('mysql:host='.$config['host'].';dbname='.$config['dbname'].';charset='.$charset.';port='.$port.'',$config['user'],$config['password']);//開始事務回滾的錯誤警告$this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);}catch(PDOException $e){echo 'msyql error: '.$e->getMessage();}}//外部實例化public static function getInstance($config,$port=3306,$charset='utf8'){if(!self::$instance instanceof Db){self::$instance = new self($config,$port,$charset);}return self::$instance;}//插入數據public function insertData($table,$data){//拼接插入的數據庫字段名$columns =  implode(',',array_keys($data));//憑借插入的數據$values = ':'.implode(',:',array_keys($data));$sql = "insert into $table ($columns) values ($values)";//處理date數據格式$newdata = $this->doData($data);//預處理sql,執行添加數據操作$this->doSql($sql,$newdata);//成功執行后返回插入數據的id,失敗返回錯誤信息if($this->stmt->errorCode()==00000){return $this->pdo->lastInsertId();}else{return $this->stmt->errorInfo()[2];}}//更新數據public function updateData($table,$data,$where){//檢查需要更新的數據是否存在if(!$this->getOne($table,array_keys($data)[0],$where)){echo '需要更新的數據不存在';return false;}//檢查傳入的數據并且拼接成字符串if(is_array($data)){$columns = '';foreach($data as $k=>$v){$columns.= $k.'=:'.$k.',';}$columns=rtrim($columns,',');}//sql語句$sql = "UPDATE $table SET $columns WHERE ".$where;//傳入的數組處理成pdo定的數據格式[':user_name'=>'lisi',':user_age'=>39]$newdata = $this->doData($data);//預處理sql,執行添加數據操作$this->doSql($sql,$newdata);//沒有錯誤返回1,有錯誤返回錯誤信息if($this->stmt->errorCode()==00000){return 1;}else{return $this->stmt->errorInfo()[2];}}//查詢一條數據public function getOne($table,$fields,$where){//檢查傳入的字段是否是數組if(is_array($fields)){if(count($fields)>1){$columns=implode(',',$fields);}else{$columns=$fields[0];}   }else{$columns = $fields;}//查詢語句$sql = "SELECT $columns FROM $table WHERE ".$where.' LIMIT 1';//預處理sql,執行添加數據操作$this->doSql($sql);//獲得查詢的結果集$res = $this->stmt->fetch(PDO::FETCH_ASSOC);//如果沒有錯誤則返回查詢的結果集,否則返回錯誤信息if($this->stmt->errorCode()==00000){return $res;}else{return $this->stmt->errorInfo()[2];}   }//查詢多條數據public function getAll($table,$fields,$where=1){//檢查傳入的字段是否是數組if(is_array($fields)){if(count($fields)>1){$columns=implode(',',$fields);}else{$columns=$fields[0];}   }else{$columns = $fields;}//查詢語句$sql = "SELECT $columns FROM $table WHERE ".$where;//預處理sql,執行添加數據操作$this->doSql($sql);//獲得查詢的結果集$res = $this->stmt->fetchALL(PDO::FETCH_ASSOC);//如果沒有錯誤則返回查詢的結果集,否則返回錯誤信息if($this->stmt->errorCode()==00000){return $res;}else{return $this->stmt->errorInfo()[2];}   }//刪除數據public function delData($table,$where){//檢查需要更新的數據是否存在if(!$this->getOne($table,['*'],$where)){echo '需要刪除的數據不存在';return false;}if(!$where){echo '請添加刪除條件';return false;}$sql = "DELETE FROM $table WHERE ".$where;//預處理sql,執行添加數據操作$this->doSql($sql);//如果沒有錯誤則返回查詢的結果集,否則返回錯誤信息if($this->stmt->errorCode()==00000){return 1;}else{return $this->stmt->errorInfo()[2];}}//處理傳入的數據private function doData($data){foreach($data as $k=>$v){$newk = ':'.$k;$newdata[$newk]=$v;}return $newdata;}//執行sql操作function doSql($sql,$data=null){//預處理sql$this->stmt=$this->pdo->prepare($sql);//執行添加數據操作$this->stmt->execute($data);}//禁止外部克隆private function __clone(){}}
$config = ['host'=>'127.0.0.1','dbname'=>'shop','user'=>'root','password'=>'root'];
$db = Db::getInstance($config,3306,'utf8');//插入數據
$table= 'user';
$data=['user_name'=>'sunliang','user_age'=>28,'sex'=>1,'email'=>'323424958@126.com','password'=>md5(123456),'money'=>544545.34];
echo $db->insertData($table,$data);
// $sql = 'insert into (username,password) values (:username,password)';
// $stmt = $db->prepare($sql);
// $data = [':username'=>'lisi',':password'=>123456];
// $stmt->execute($data);//修改數據
// $table = 'user';
// $data=['user_name'=>'sunliang','user_age'=>28,'email'=>'323424958@qq.com'];
// $sql = "update user set user_name=:username,user_age=:user_age,email=:email where id = 1";
// echo $db->updateData($table,$data,'id=18');
// $stmt = $db->prepare($sql);
// $stmt->execute($data);//查詢一條數據
// $table = 'user';
// $fields= ['user_name','id'];
// $sql = 'select user_name,email from user where id = 1';
// print_r($db->getOne($table,$fields,'id=2'));//查詢多條數據
// $table = 'user';
// $fields= ['user_name','id'];
// $sql = 'select user_name,email from user where id = 1';
// print_r($db->getAll($table,$fields));//刪除數據
// $table = 'user';
// echo $db->delData($table,'id=16');

簡單的數據庫類

轉載于:https://blog.51cto.com/woaijorden/2153207

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253935.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle參數文件、控制文件、數據文件、日志文件的位置及查詢方法

參數文件&#xff1a;所有參數文件一般在 $ORACLE_HOME/dbs 下 sqlplus查詢語句&#xff1a;show parameter spfile; 網絡連接文件&#xff1a; $ORACLE_HOME/dbs/network/admin 目錄中 控制文件&#xff1a;select * from v$controlfile; 數據文件&#xff1a;一般在oracleda…

Bishops Alliance—— 最大上升子序列

原題鏈接&#xff1a;http://codeforces.com/gym/101147/problem/F 題意&#xff1a;n*n的棋盤&#xff0c;給m個主教的坐標及其私有距離p&#xff0c;以及常數C&#xff0c;求位于同一對角線上滿足條件&#xff1a;dist(i, j) > p[i]^2 p[j]^2 C 的主教集合的元素個數最…

LeGO-LOAM學習

前言 在學習了LOAM之后&#xff0c;了解到LeGO-LOAM&#xff08;面向復雜情況的輕量級優化地面的雷達里程計&#xff09;&#xff0c;進行了一個學習整理。 Github&#xff1a;https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 論文&#xff1a;https://github.com/Robu…

char data[0]用法總結

struct MyData { int nLen; char data[0]; }; 開始沒有理解紅色部分的內容&#xff0c;上網搜索下&#xff0c;發現用處很大&#xff0c;記錄下來。 在結構中&#xff0c;data是一個數組名&#xff1b;但該數組沒有元素&#xff1b;該數組…

(一)低功耗設計目的與功耗的類型

一、低功耗設計的目的 1.便攜性設備等需求 電子產品在我們生活中扮演了極其重要的作用&#xff0c;便攜性的電子設備便是其中一種。便攜性設備需要電池供電、需要消耗電池的能量。在同等電能提供下&#xff0c;低功耗設計的產品就能夠工作更長的時間。時間的就是生命&#xff…

(轉)徹底學會使用epoll(一)——ET模式實現分析

注&#xff1a;之前寫過兩篇關于epoll實現的文章&#xff0c;但是感覺懂得了實現原理并不一定會使用&#xff0c;所以又決定寫這一系列文章&#xff0c;希望能夠對epoll有比較清楚的認識。是請大家轉載務必注明出處&#xff0c;算是對我勞動成果的一點點尊重吧。另外&#xff0…

MFC的消息映射有什么作用

絕對以下這三個解釋的比較簡潔&#xff0c;特此做個記錄&#xff01;以感謝回答的這些人&#xff01; MFC的消息映射有什么作用: Windows操作系統主要是有消息來處理的&#xff0c;每個程序都有自己的消息隊列&#xff0c;并且這些消息是有優先級的&#xff0c;也就是誰會先…

線性表的鏈式存儲結構

鏈式存儲結構的定義 1.概念定義&#xff1a; - n個結點離散分配 - 彼此通過指針相連 - 每個結點只有一個前驅結點和一個后繼結點 - 首結點沒有前驅結點&#xff0c;尾結點沒有后繼結點 2.專業術語 -首結點&#xff1a;第一個有有效數據的結點 -尾結點&#xff1a;最后一個有有效…

Apache 設置http跳轉至HTTPS訪問

為什么80%的碼農都做不了架構師&#xff1f;>>> <VirtualHost>...</VirtualHost> 中添加如下配置 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://域名/$1 [R301,L] </IfModule> 轉…

JAVA線程概念

一、程序與進程 1、程序&#xff1a;一段靜態的代碼。 2、進程&#xff1a;程序的一次動態執行過程&#xff0c;它對應從代碼加載、執行到執行完畢的一個完整過程。 3、進程也稱任務&#xff0c;支持多個進程同時執行的OS就被稱為多進程OS或多任務OS。 二、進程與線程 在一…

(二)功耗的分析

前面學習了進行低功耗的目的個功耗的構成&#xff0c;今天就來分享一下功耗的分析。由于是面向數字IC前端設計的學習&#xff0c;所以這里的功耗分析是基于DC中的power compiler工具&#xff1b;更精確的功耗分析可以采用PT&#xff0c;關于PT的功耗分析可以查閱其他資料&#…

Hibernate創建hqll時報錯

Hibernate 問題,在執行Query session.createQuery(hql) 報錯誤 出錯截圖&#xff1a; 這條語句在java運行環境下&#xff0c;直接連數據庫不出錯&#xff0c;如果在hiberante,struts環境下就出錯 出錯原因&#xff1a;jar包沖突&#xff0c;struts2和hibernate框架中都有antlr包…

.NET Core TDD 前傳: 編寫易于測試的代碼 -- 全局狀態

第1篇: 講述了如何創造"縫". "縫"(seam)是需要知道的概念. 第2篇, 避免在構建對象時寫出不易測試的代碼. 第3篇, 依賴項和迪米特法則. 本文是第4篇, 將介紹全局狀態引起的問題. 全局狀態 全局狀態, 也可以叫做應用程序狀態, 它是一組變量, 這些變量維護著…

(三)系統與架構級低功耗設計

前面講解了使用EDA工具&#xff08;主要是power compiler&#xff09;進行功耗分析的流程&#xff0c;這里我們將介紹在數字IC中進行低功耗設計的方法&#xff0c;同時也結合EDA工具&#xff08;主要是Design Compiler&#xff09;如何實現。我們的講解的低功耗設計主要是自頂向…

python---統計列表中數字出現的次數

1 import collections 2 3 a [1,2,3,1,2,3,4,1,2,5,4,6,7,7,8,9,6,2,23,4,2,1,5,6,7,8,2] 4 b collections.Counter(a) 5 for c in b&#xff1a; print c,b[c] 轉載于:https://www.cnblogs.com/lxs1314/p/7236321.html

MFC入門(一)——MFC是一個編程框架

MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架&#xff0c;它的目的就是讓程序員在此基礎上來建立Windows下的應用程序&#xff0c;這是一種相對SDK來說更為簡單的方法。因為總體上&#xff0c;MFC框架定義了應用程序的輪廓&#xff0c;并…

2.數據結構筆記學習--線性表基本操作

線性表的結構定義&#xff1a; 順序表的結構定義&#xff1a; typedef struct {int data[maxSize]; //存放順序表元素的數組&#xff0c;一般用 int A[maxSize];int length; //存放順序表的長度,一般用 int n; }SeqList; 單鏈表結點定義&#xff1a; typedef struct L…

(四)RTL級低功耗設計

前面介紹了系統級的低功耗設計&#xff0c;換句話說就是在系統級降低功耗可以考慮的方面。系統級的低功耗設計&#xff0c;主要是由系統級設計、具有豐富經驗的人員實現&#xff0c;雖然還輪不到我們設計&#xff0c;我們了解一下還是比較好的。我們前端設計人員的重點不在系統…

Unity3D 游戲前端開發技能樹(思維導圖)

如果做游戲也是一種游戲,那么這個游戲的自由度實在是太高了.(導圖源文件鏈接&#xff1a;http://pan.baidu.com/s/1eSHpH5o 密碼&#xff1a;qzl5) 最近要用思維導圖軟件Xmind把自己的思路好好捋一捋,算是溫故知新吧. 轉載于:https://www.cnblogs.com/qiaogaojian/p/6098962.ht…

js forEach

&#xfeff;&#xfeff;forEach()函數從頭到尾把數組遍歷一遍。有三個參數各自是&#xff1a;數組元素。元素的索引&#xff0c;數組本身&#xff08;假設是一個參數就是數組元素&#xff0c;也就是數組的值。var data[1,2,3,4,5,6]; var sum0; data.forEach(function(v){//當…