精简高效!Mysql数据库的封装技巧解析(mysql数据库封装)

Mysql数据库是目前更流行的开源数据库,用于存储和管理数据。在很多应用程序中,Mysql数据库是不可或缺的一部分。但是,在使用Mysql数据库时,开发人员需要编写很多重复的代码并处理各种异常情况。为了减轻这些负担,开发人员可以使用Mysql数据库的封装技巧来简化代码并提高效率。

创新互联公司主营河口网站建设的网络公司,主营网站建设方案,成都app开发,河口h5小程序开发搭建,河口网站营销推广欢迎河口等地区企业咨询

Mysql数据库的封装技巧

1.使用Mysqli(Mysql Improved Extension)

Mysqli是Mysql数据库上的改进扩展,它比Mysql原本的API更加强大和灵活。Mysqli提供了一些新的功能,如面向对象的API和预处理语句等。在使用Mysqli时,可以将常见的操作封装到一个单独的类中,以便简化代码并提高代码的可读性。

2.使用PDO(PHP Data Objects)

PDO是PHP的一个轻量级数据库抽象层,支持多种数据库,包括Mysql。PDO提供了一些强大的功能,如事务处理、预处理语句和错误处理等。使用PDO时,可以将数据库操作封装到一个单独的类中,以便进行代码重用和测试。PDO使用标准的SQL语法,并提供了一些高级特性,如预处理语句、绑定参数和命名占位符等,可以避免一些潜在的安全问题。

3.使用ORM(Object-Relational Mapping)

ORM是一种将对象和关系数据库映射起来的技术。ORM将数据库操作封装在一个对象中,这个对象可以方便地访问和修改数据库中的数据。ORM具有很好的可移植性和可扩展性,可以更容易地将应用程序移植到另一个平台上。ORM使用了面向对象的技术,将数据库操作封装为对象的方法,使代码更加简洁和易于维护。

4.使用数据库连接池

数据库连接池是一种将数据库连接缓存起来重复使用的技术。每次数据库连接都需要进行网络连接和身份验证,这些操作需要消耗一定的时间和资源。使用数据库连接池可以提高应用程序的性能和响应速度。

5.使用缓存技术

缓存技术是一种将常用数据在内存中缓存起来的技术,以便减少数据库的访问量。Mysql数据库的查询操作是比较耗时的,如果每次请求都要查询一遍数据库,那么应用程序的响应速度会受到很大的影响。使用缓存技术可以减少数据库的访问量,提高应用程序的性能和响应速度。缓存技术可以使用Memcached或Redis等开源软件实现。

6.使用适当的索引

索引是一种将数据按照一定规则排序的数据结构。Mysql数据库使用B-Tree索引,可以支持高效的数据检索和排序。Mysql数据库中的索引有很多种类型,包括聚集索引、非聚集索引、主键索引、唯一索引等。我们需要根据数据的特性和查询需求来选择适当的索引。

通过使用Mysql数据库的封装技巧,开发人员可以简化代码并提高效率。使用Mysqli和PDO可提供更加强大和灵活的API,并提供一些高级特性,如预处理语句和错误处理。使用ORM可以更好地将对象和关系数据库映射起来,便于访问和修改数据。使用数据库连接池和缓存技术可以提高应用程序的性能和响应速度。使用适当的索引可以支持高效的数据检索和排序。关注这些技巧能够使开发人员更好地利用Mysql数据库,提高应用程序的质量和效率。

相关问题拓展阅读:

  • php封装一个class类实现mysql数据库的增删该查
  • php封装一个类能实现mysql数据库的增删改查
  • 怎样封装学生管理系统JSE用到数据库MYSQL

php封装一个class类实现mysql数据库的增删该查

class db_mysql

{

var $querynum = 0 ; //当前页面进程查询数据库的次数

var $dblink ;//团迹数据库连接资源

//链接数据库

function connect($dbhost,$dbuser,$dbpw,$dbname=’举含’,$dbcharset=’utf-8′,$pconnect=0 , $halt=true)

{

$func = empty($pconnect) ? ‘mysql_connect’ : ‘mysql_pconnect’ ;

$this->dblink = @$func($dbhost,$dbuser,$dbpw) ;

if ($halt && !$this->dblink)

{

$this->halt(“无法链接数据库!”);

}

//设置查询字符集

mysql_query(“SET character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary”,$this->dblink) ;

//选择数据库

$dbname && @mysql_select_db($dbname,$this->dblink) ;

}

//选择数据库

function select_db($dbname)

{

return mysql_select_db($dbname,$this->dblink);

}

//执行SQL查询

function query($sql)

{

$this->querynum++ ;

return mysql_query($sql,$this->dblink) ;

}

//返回最近一次与连接句柄关联的INSERT,UPDATE 或DELETE 查询所影响的记录行数

function affected_rows()

{

return mysql_affected_rows($this->dblink) ;

}

//取得结果集中行的数目,只对select查询的结果集有效

function num_rows($result)

{

return mysql_num_rows($result) ;

}

//获得单格的查询结果

function result($result,$row=0)

{

return mysql_result($result,$row) ;

}

//取得上一步 INSERT 操作产生的 ID,只对表有AUTO_INCREMENT ID的操作有效

function insert_id()

{

return ($id = mysql_insert_id($this->dblink)) >= 0 ? $id : $this->result($this->query(“SELECT last_insert_id()”), 0);

}

//从结果集提取当塌答并前行,以数字为key表示的关联数组形式返回

function fetch_row($result)

{

return mysql_fetch_row($result) ;

}

//从结果集提取当前行,以字段名为key表示的关联数组形式返回

function fetch_assoc($result)

{

return mysql_fetch_assoc($result);

}

//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回

function fetch_array($result)

{

return mysql_fetch_array($result);

}

//关闭链接

function close()

{

return mysql_close($this->dblink) ;

}

//输出简单的错误html提示信息并终止程序

function halt($msg)

{

$message = “\n\n” ;

$message .= “\n” ;

$message .= “\n” ;

$message .= “\n” ;

$message .= “数据库出错:”.htmlspecialchars($msg).”\n” ;

$message .= “\n” ;

$message .= “” ;

echo $message ;

exit ;

}

}

options(self::MYSQL_OPT_READ_TIMEOUT, 3);

$db->options(self::MYSQL_OPT_WRITE_TIMEOUT, 1);

@$db->real_connect($cfg,$cfg,$cfg,$cfg);

if ($db->connect_error) {

$this->crash($db->errno,$db->error);

}

$db->set_charset(“utf8”);

$this->db = $db;

//echo $this->db->stat;

}

public static function getInstance(){

if(!(self::$_instance instanceof self)){

self::$_instance = new self();

}

return self::$_instance;

}

private function __clone() {} //覆盖__clone()方法,禁止克隆

public function find($conditions = null){

if($conditions) $this->where($conditions);

return $this->getArray($this->buildSql(),1);

}

public function findAll($conditions = null){

if($conditions) $this->凯判where($conditions);

return $this->getArray($this->buildSql());

}

//表

public function t($table){ $this->tbl_name = $table; return $this;}

//条件

public function where($conditions){

$where = ”尺孙扮;

if(is_array($conditions)){

$join = array();

foreach( $conditions as $key => $condition ){

$condition = $this->db->real_escape_string($condition);

$join = “`{$key}` = ‘{$condition}'”;

}

$where = “陵灶WHERE “.join(” AND “,$join);

}else{

if(null != $conditions) $where = “WHERE “.$conditions;

}

$this->where = $where;

return $this;

}

//排序

public function sort($sort){

if(null != $sort) $sort = “ORDER BY {$sort}”;

$this->sort = $sort;

return $this;

}

//字段

public function fields($fields){ $this->fields = $fields; return $this; }

public function limit($limit){$this->limit = $limit; return $this;}

private function buildSql(){

$this->fields = empty($this->fields) ? “*” : $this->fields;

$sql = “SELECT {$this->fields} FROM {$this->tbl_name} {$this->where} {$this->sort}”;

accessLog(‘db_access’,$sql);

if(null != $this->limit)$sql .= ” limit {$this->limit}”;

return $sql;

}

/**

* 返回查询数据

* @param $sql

* @param bool $hasOne

* @return array|bool|mixed

*/

private function getArray($sql,$hasOne = false){

if($this->db->real_query($sql) ){

if ($result = $this->db->use_result()) {

$row = array();

if($hasOne){

$row = $result->fetch_assoc();

}else{

while($d = $result->fetch_assoc()) $row = $d;

}

$result->close();

$this->fields = “*”;

return $row;

}else{

return false;

}

}else{

if($this->db->error){

$this->crash($this->db->errno,$this->db->error,$sql);

}

}

}

public function findSql($sql,$hasOne = false){

accessLog(‘db_access’,$sql);

if($this->db->real_query($sql) ){

if ($result = $this->db->use_result()) {

$row = array();

if($hasOne){

$row = $result->fetch_assoc();

}else{

while($d = $result->fetch_assoc()) $row = $d;

}

$result->close();

$this->fields = “*”;

return $row;

}else{

return false;

}

}else{

if($this->db->error){

$this->crash($this->db->errno,$this->db->error,$sql);

}

}

}

public function create($row){

if(!is_array($row))return FALSE;

$row = $this->prepera_format($row);

if(empty($row))return FALSE;

foreach($row as $key => $value){

$cols = ‘`’.$key.’`’;

$vals = “‘”.$this->db->real_escape_string($value).”‘”;

}

$col = implode(‘,’, $cols);

$val = implode(‘,’, $vals);

$sql = “INSERT INTO `{$this->tbl_name}` ({$col}) VALUES ({$val})”;

accessLog(‘db_access’,$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if($this->db->insert_id){

return $this->db->insert_id;

}

if($this->db->affected_rows){

return true;

}

}

return FALSE;

}

//直接执行sql

public function runSql($sql){

accessLog(‘db_access’,$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

return true;

}else{

return false;

}

}

public function update($row){

$where = “”;

$row = $this->prepera_format($row);

if(empty($row))return FALSE;

foreach($row as $key => $value){

$value = $this->db->real_escape_string($value);

$vals = “`{$key}` = ‘{$value}'”;

}

$values = join(“, “,$vals);

$sql = “UPDATE {$this->tbl_name} SET {$values} {$this->where}”;

accessLog(‘db_access’,$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if( $this->db->affected_rows){

return true;

}

}

return false;

}

function delete(){

$sql = “DELETE FROM {$this->tbl_name} {$this->where}”;

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if( $this->db->affected_rows){

return true;

}

}

return FALSE;

}

private function prepera_format($rows){

$columns = $this->getArray(“DESCRIBE {$this->tbl_name}”);

$newcol = array();

foreach( $columns as $col ){

$newcol> = $col;

}

return array_intersect_key($rows,$newcol);

}

//崩溃信息

private function crash($number,$message,$sql=”){

$msg = ‘Db Error ‘.$number.’:’.$message ;

if(empty($sql)){

echo t(‘db_crash’);

}else{

$msg .= ” SQL:”.$sql;

echo t(‘db_query_err’);

}

accessLog(‘db_error’,$msg);

exit;

}

}

class sqlHelper{

public $conn;

public $dbname=”数据库名正首称”;

public $username=”数据库用户轮衡名”;

public $password=”数据库密码”;

public $host=”localhost”;

//连接数据库

public function __construct(){

$this->conn=mysql_connect($this->host,$this->username,$this->password);

if(!$this->conn){

die(“连接失败”.mysql_error());

}

mysql_select_db($this->dbname,$this->conn);

}

//执行查举桐数询语句

public function execute_dql($sql){

$res=mysql_query($sql,$this->conn);

return $res;

}

//执行增填改语句

public function execute_dml($sql){

$b=mysql_query($sql,$this->conn);

if(!$b){

return 3;

}else{

if(mysql_affected_rows($this->conn)){

return 1;//表示OK

}else{

return 2;//表示没有行收到影响

}

}

}

php封装一个类能实现mysql数据库的增删改查

看着好乱啊 !

还没到20个问题吗

楼主整理代码会好一点

connect();

    }

    //链接数据库

  public function connect(){

     $link = @mysql_connect(self::HOST,  self::USER,  self::PWD);

     if(!is_resource($link)){

echo $this->getError();

     }

     $db = mysql_select_db(self::DBNAME,$link);

     if(!$db){

echo $this->getError();

     }

     mysql_query(“set names “.self::CODE);

     //echo ‘链接成功’;

  }

   //增加数据

    public function add($tname,$date){

$sql = “insert into ” .$tname.” set “;

foreach ($date as $key=>$vo){

$sql.=$key.”='”.$vo.”‘,”;

}

 晌伏$sql = substr($sql,0,-1);

mysql_query($sql);

if(mysql_affected_rows()>0){

      乎亩      echo mysql_insert_id();

}else{

echo $this->getError();

}

    }

  

  

   public function getError(){

return mysql_errno().’:’.mysql_error();

    }

   

    

    

}

$db=new mySql();

$date = array(“name”=>”lili”,”age”=>”20″,”sex”=>”男”);

$db->add(“st_user”,$date);

怎样封装学生管理系统JSE用到数据库MYSQL

什么是“封装数据库”?

关于mysql数据库封装的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

本文名称:精简高效!Mysql数据库的封装技巧解析(mysql数据库封装)
本文来源:http://www.shufengxianlan.com/qtweb/news15/256415.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联