摘要:最新插入的支持?jǐn)?shù)據(jù)庫移植如果你的部署將來有多種數(shù)據(jù)庫那就用它了同時是設(shè)計(jì)的執(zhí)行效率較高他已經(jīng)封裝為的擴(kuò)展庫組件了運(yùn)行快效率高這是修改為版本的原生類導(dǎo)入的配置文件我這里只是方便前端修改,也可以搞成文件
init(); return; } $this->db = new SQLite3("./db.php"); } function init(){ $this->db = new SQLite3("./db.php"); // TODO: } function changes(){ return $this->db->changes(); } function query($sql,$param=null,$memb=null){ $stmt=$this->db->prepare($sql); if(!$stmt) return false; if($param){ if(is_array($param)){ for($i=0;$ibindValue($i+1,$param[$i]); }else{ $stmt->bindValue(1,$param); } } $rs=$stmt->execute(); if(!$rs){ $stmt->close(); return false; } $arr=$rs->fetchArray(SQLITE3_NUM); $rs->finalize(); $stmt->close(); if(!$arr) return null; if(!$memb) return $arr; $res=array(); for($i=0;$i db->prepare($sql); if(!$stmt) return false; if($param){ if(is_array($param)){ for($i=0;$i bindValue($i+1,$param[$i]); }else{ $stmt->bindValue(1,$param); } } $rs=$stmt->execute(); if(!$rs){ $stmt->close(); return false; } $res=array(); while($arr=$rs->fetchArray(SQLITE3_NUM)){ if(!$memb) { $res[]=$arr; continue; } if(count($memb)==1 && $memb[0]==null){ $res[]=$arr[0]; continue; } $it=array(); for($i=0;$i finalize(); $stmt->close(); return $res; } function querySingle($sql,$param=null){ $res=$this->query($sql,$param); if(!$res) return false; return $res[0]; } function querySingleAll($sql,$param=null){ $stmt=$this->db->prepare($sql); if(!$stmt) return false; if($param){ if(is_array($param)){ for($i=0;$i bindValue($i+1,$param[$i]); }else{ $stmt->bindValue(1,$param); } } $rs=$stmt->execute(); if(!$rs){ $stmt->close(); return false; } $res=array(); while($arr=$rs->fetchArray(SQLITE3_NUM)){ $res[]=$arr[0]; } $rs->finalize(); $stmt->close(); return $res; } function exec($sql,$param=null){ $stmt=$this->db->prepare($sql); if(!$stmt) return false; if($param){ if(is_array($param)){ for($i=0;$i bindValue($i+1,$param[$i]); }else{ $stmt->bindValue(1,$param); } } $rs=$stmt->execute(); if($rs) { $res=true; $rs->finalize(); }else{ $res=false; } $stmt->close(); return $res; } function begin(){ return $this->exec("BEGIN"); } function rollback(){ return $this->exec("ROLLBACK"); } function commit(){ return $this->exec("COMMIT"); } function escapeString($s){ return $this->db->escapeString($s); } //最新插入的id function lastInsertRowID(){ return $this->db->lastInsertRowID(); } function lastErrorMsg (){ return $this->db->lastErrorMsg(); } } ?>
PDO支持?jǐn)?shù)據(jù)庫移植,如果你的部署將來有多種數(shù)據(jù)庫,那就用它了.同時,PDO是C設(shè)計(jì)的,執(zhí)行效率較高.他已經(jīng)封裝為PHP的擴(kuò)展庫組件了.運(yùn)行快,效率高
class dbManager{ function __construct($config) { $text = file_get_contents($config); $obj = json_decode($text); $this->db= new PDO($obj -> dsn, $obj -> user, $obj -> pass); } private function bind_param($stmt,&$param){ if ($param || $param===0) { if (is_array($param)) { for ($i = 0; $i < count($param); $i++) $stmt -> bindParam($i + 1, $param[$i]); } else { $stmt -> bindParam(1, $param); } } } function exec($sql, $param = null) { $stmt = $this -> db -> prepare($sql); if (!$stmt){ var_dump($this->db->errorinfo()); return false; } $this->bind_param($stmt,$param); $res = $stmt -> execute(); if($res){ $res=$stmt->rowCount(); } $stmt -> closeCursor(); return $res; } function query($sql,$param=null,$name=true){ $stmt = $this -> db -> prepare($sql); if (!$stmt){ return null; } $this->bind_param($stmt,$param); $res = $stmt -> execute(); if(!$res){ $stmt->closeCursor(); return null; } $arr=$stmt->fetch($name?PDO::FETCH_ASSOC:PDO::FETCH_NUM); $stmt -> closeCursor(); return $arr; } function queryAll($sql,$param=null,$name=true){ $stmt = $this -> db -> prepare($sql); if (!$stmt){ return null; } $this->bind_param($stmt,$param); $res = $stmt -> execute(); if(!$res){ $stmt->closeCursor(); return null; } $arr=$stmt->fetchAll($name?PDO::FETCH_ASSOC:PDO::FETCH_NUM); $stmt -> closeCursor(); return $arr; } function querySingle($sql,$param=null,$name=true){ $stmt = $this -> db -> prepare($sql); if (!$stmt){ return null; } $this->bind_param($stmt,$param); $res = $stmt -> execute(); if(!$res){ $stmt->closeCursor(); return null; } $arr=$stmt->fetchColumn(); $stmt -> closeCursor(); return $arr; } function querySingleAll($sql,$param=null,$name=true){ $stmt = $this -> db -> prepare($sql); if (!$stmt){ return null; } $this->bind_param($stmt,$param); $res = $stmt -> execute(); if(!$res){ $stmt->closeCursor(); return null; } $arr=[]; do{ $item=$stmt->fetchColumn(); if($item) $arr[]=$item; }while($item!==false); $stmt -> closeCursor(); return $arr; } public function begin() { $this -> db -> beginTransaction(); } public function rollback() { $this -> db -> rollBack(); } public function commit() { $this -> db -> commit(); } } /* $db=new dbManager("db.json"); $db->exec("CREATE TABLE USER(ID INTEGER PRIMARY KEY NOT NULL)"); $db->exec("INSERT INTO user(ID) VALUES(?)",1); var_dump($db->query("SELECT * FROM USER WHERE ID=?",1)); var_dump($db->queryAll("SELECT * FROM USER WHERE ID=?",1)); var_dump($db->querySingle("SELECT * FROM USER WHERE ID=?",1)); var_dump($db->querySingleAll("SELECT * FROM USER WHERE ID=?",1)); */ ?>
這是修改為pdo版本的原生db類
導(dǎo)入的json配置文件
{
"dsn":"sqlite:test.db", "user":"", "pass":""
}
我這里只是方便前端修改,也可以搞成php文件
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26220.html
摘要:在上一篇文章中我們講解了使用語言的標(biāo)準(zhǔn)庫包操作數(shù)據(jù)庫的過程,雖然使用包操作數(shù)據(jù)也是挺方便的,但是需要自己寫每一條語句,因此我們可能會自己再度進(jìn)行封裝,以便更好地使用,而使用現(xiàn)有語言開源框架則是代替自己封裝的一個更好的方式。在上一篇文章中我們講解了使用Go語言的標(biāo)準(zhǔn)庫sql/database包操作數(shù)據(jù)庫的過程,雖然使用sql/database包操作數(shù)據(jù)也是挺方便的,但是需要自己寫每一條SQL語...
閱讀 3573·2021-10-11 10:59
閱讀 1591·2021-09-29 09:35
閱讀 2259·2021-09-26 09:46
閱讀 3771·2021-09-10 10:50
閱讀 953·2019-08-29 12:17
閱讀 821·2019-08-26 13:40
閱讀 2433·2019-08-26 11:44
閱讀 2103·2019-08-26 11:22