這次給大家帶來PDO對mysql資料庫增刪改查操作類步驟詳解,PDO對mysql資料庫增刪改查操作的注意事項有哪些,下面就是實戰案例,一起來看一下。
前言
PDO一是PHP資料對象(PHP Data Object)的縮寫。
並不能使用PDO擴充本身執行任何資料庫操作,必須使用一個database-specific PDO driver(針對特定資料庫的PDO驅動)訪問資料庫伺服器。
PDO並不提供資料庫抽象,它並不會重寫SQL或提供資料庫本身缺失的功能,如果你需要這種功能,你需要使用一個更加成熟的抽象層。
最近在做項目時用到了PDO操作mysql資料庫,於是自己寫了一個類檔案,命名為mysql_class.php檔案代碼如下:
範例程式碼
<?phpclass mysql{ //常量聲明 const DSN = "mysql:host=[資料庫地址];dbname=[資料庫名];charset=utf8";//資料庫地址與資料庫名及編碼 const USERNAME = "[資料庫使用者名稱]";//使用者名稱 const PASSWD = "[資料庫密碼]";//密碼 //私人變數聲明 private $sql = NULL;//sql語句緩衝 private $link = NULL;//資料庫連接 private $result = NULL;//結果 /******************************************************************************* * @ 名稱:建立串連 * @ 屬性:私人 *******************************************************************************/ private function connect(){ try { $this->link = new \PDO(self::DSN, self::USERNAME, self::PASSWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));//建立串連 } catch (PDOException $e) { die ("Error!:".$e->getMessage()."<hr/>"); } } /******************************************************************************* * @ 名稱:執行sql語句 * @ 屬性:私人 * @ 入口參數:無 * @ 出口參數:執行成功返回真,否則返回假,查詢語句儲存結果集數組 *******************************************************************************/ private function sql(){ try { $this->connect(); $this->link->beginTransaction();//開啟一個事務 $prepare = $this->link->prepare($this->sql);//準備查詢語句 $prepare->execute();//執行查詢語句並返回結果集 $cmd = strtolower(substr(trim($this->sql),0,6));//截取命令字元 if($cmd == "select"){ $array = $prepare->fetch(PDO::FETCH_ASSOC);//擷取結果集中的所有資料 if(count($array)){ $this->result = NULL; $this->result = $array;//儲存結果集 return true;//查詢到結果返回真 }else{ return false;//否則返回假 } }else if($cmd == "insert" || $cmd == "delete" || $cmd == "update"){ if($prepare){ return true;//執行成功返回真 }else{ return false;//否則返回假 } } $this->link->commit(); //如果正確執行完成那麼確認commit } catch (PDOException $e) { $this->link->rollBack();//如果執行中有錯誤的情況下復原 die ("Error!:".$e->getMessage()."<hr/>"); } } /******************************************************************************* * @ 名稱:sql語句處理 * @ 屬性:公有 * @ 入口參數:cmd增刪改查字元命令;dsname資料表名;first第一個參數;second第二個參數; * @ 出口參數:執行成功返回真,否則返回假,查詢操作返回結果集數組 * @ 使用樣本: $mysql->handle("insert","abc","openid,nickname","'123','abc'");//增加 $mysql->handle("delete","abc","openid='123'");//刪除 $mysql->handle("update","abc","nickname='def'","openid='123'");//更新 $res = $mysql->handle("select","abc","*","openid='123'");//查詢 if(is_array($res) == true){ foreach($res as $key=>$val){ echo $key."=".$val."<hr>"; } }//遍曆查詢結果數組 *******************************************************************************/ public function handle($cmd,$dsname,$first,$second=NULL){ switch($cmd){ case 'insert'://插入 $this->sql = "insert into $dsname ($first) values ($second)"; break; case 'delete'://刪除 $this->sql = "delete from $dsname where $first"; break; case 'update'://更新 $this->sql = "update $dsname set $first where $second"; break; case 'select'://查詢 $this->sql = "select $first from $dsname where $second"; break; default: die ("Syntax Error!");//提示法錯誤 break; } $res = $this->sql();//執行sql語句 if($res){ if($cmd == 'select'){ return $this->result;//返回查詢結果 }else{ return true;//執行成功返回真 } }else{ return false;//否則返回假 } $this->link=NULL;;//關閉資料庫 }}$mysql = new mysql;//資料庫類的執行個體化?>
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
php命名空間使用詳解
Laravel 5.5核心架構使用詳解