php基於單例模式封裝mysql類的方法

來源:互聯網
上載者:User
這篇文章主要介紹了php基於單例模式封裝mysql類,結合完整執行個體形式分析了php使用單例模式封裝的mysql類定義與使用方法,需要的朋友可以參考下

具體如下:

類:


<?phpheader("content-type:text/html;charset=utf-8");//封裝一個類/*掌握滿足單例模式的必要條件(1)私人的構造方法-為了防止在類外使用new關鍵字執行個體化對象(2)私人的成員屬性-為了防止在類外引入這個存放對象的屬性(3)私人的複製方法-為了防止在類外通過clone成生另一個對象(4)公有的靜態方法-為了讓使用者進行執行個體化對象的操作*/class db{  //三私一共  //私人的靜態屬性  private static $dbcon=false;  //私人的構造方法  private function __construct(){  $dbcon=@mysql_connect("localhost","root","root");   mysql_select_db("small2",$dbcon) or die("mysql_connect error");   mysql_query("set names utf8");  }  //私人的複製方法  private function __clone(){}  //公用的靜態方法  public static function getIntance(){   if(self::$dbcon==false){    self::$dbcon=new self;   }   return self::$dbcon;  }  //列印資料  public function p($arr){    echo "<pre>";    print_r($arr);    echo "</pre>";  }  public function v($arr){  echo "<pre>";    var_dump($arr);    echo "</pre>";  }  //執行語句  public function query($sql){  $query=mysql_query($sql);   return $query;  }  /**  * 查詢某個欄位  * @param  * @return string or int  */  public function getOne($sql){   $query=$this->query($sql);    return mysql_result($query,0);  }  //擷取一行記錄,return array 一維數組  public function getRow($sql,$type="assoc"){   $query=$this->query($sql);   if(!in_array($type,array("assoc",'array',"row"))){     die("mysql_query error");   }   $funcname="mysql_fetch_".$type;   return $funcname($query);  }  //擷取一條記錄,前置條件通過資源擷取一條記錄  public function getFormSource($query,$type="assoc"){  if(!in_array($type,array("assoc","array","row")))  {    die("mysql_query error");  }  $funcname="mysql_fetch_".$type;  return $funcname($query);  }  //擷取多條資料,二維數組  public function getAll($sql){   $query=$this->query($sql);   $list=array();   while ($r=$this->getFormSource($query)) {    $list[]=$r;   }   return $list;  }  //獲得最後一條記錄id  public function getInsertid(){   return mysql_insert_id();  }   /**   * 定義添加資料的方法   * @param string $table 表名   * @param string orarray $data [資料]   * @return int 最新添加的id   */   public function insert($table,$data){   //遍曆數組,得到每一個欄位和欄位的值   $key_str='';   $v_str='';   foreach($data as $key=>$v){    if(empty($v)){     die("error");   }      //$key的值是每一個欄位s一個欄位所對應的值      $key_str.=$key.',';      $v_str.="'$v',";   }   $key_str=trim($key_str,',');   $v_str=trim($v_str,',');   //判斷資料是否為空白   $sql="insert into $table ($key_str) values ($v_str)";   $this->query($sql); //返回上一次增加操做產生ID值   return mysql_insert_id(); } /*  * 刪除一條資料方法  * @param1 $table, $where=array('id'=>'1') 表名 條件  * @return 受影響的行數  */  public function deleteOne($table, $where){    if(is_array($where)){      foreach ($where as $key => $val) {        $condition = $key.'='.$val;      }    } else {      $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影響的行數    return mysql_affected_rows();  }  /*  * 刪除多條資料方法  * @param1 $table, $where 表名 條件  * @return 受影響的行數  */  public function deleteAll($table, $where){    if(is_array($where)){      foreach ($where as $key => $val) {        if(is_array($val)){          $condition = $key.' in ('.implode(',', $val) .')';        } else {          $condition = $key. '=' .$val;        }      }    } else {      $condition = $where;    }    $sql = "delete from $table where $condition";    $this->query($sql);    //返回受影響的行數    return mysql_affected_rows();  } /**  * [修改操作description]  * @param [type] $table [表名]  * @param [type] $data [資料]  * @param [type] $where [條件]  * @return [type]  */ public function update($table,$data,$where){   //遍曆數組,得到每一個欄位和欄位的值   $str='';  foreach($data as $key=>$v){   $str.="$key='$v',";  }  $str=rtrim($str,',');  //修改SQL語句  $sql="update $table set $str where $where";  $this->query($sql);  //返回受影響的行數  return mysql_affected_rows(); }}?>

測試:

//mysql測試//$db=db::getIntance();//var_dump($db);/*$sql="select * from acticle";$list=$db->getAll($sql);$db->p($list);*//*$sql="select * from acticle where acticle_id=95";$list=$db->getRow($sql);$db->p($list);*//*$sql="select title from acticle";$list=$db->getOne($sql);$db->p($list);*///$list=$db->insert("users",$_POST);//$del=$db->deleteOne("users","id=26");//$del=$db->deleteAll("users","id in(23,24)");//$up=$db->update("users",$_POST,"id=27");//$id=$db->getInsertid();//print_R($id);

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.