Maison >développement back-end >tutoriel php >Comment encapsuler des classes dans la base de données php mysql

Comment encapsuler des classes dans la base de données php mysql

墨辰丷
墨辰丷original
2018-05-18 16:01:263917parcourir

Le code présenté dans cet article appartient à une classe d'encapsulation de base de données relativement simple, qui convient mieux aux débutants. Les amis qui en ont besoin peuvent s'y référer

Parlons ensuite un peu de l'idée générale. L'encapsulation de la classe entière comprend une propriété privée $conn pour la connexion à la base de données et plusieurs fonctions d'exploitation. Lorsque $conn est instancié, le constructeur traite les paramètres entrants et renvoie un handle de connexion de type ressource. Vous pouvez ensuite ajouter, supprimer, vérifier et modifier la base de données en appelant la méthode correspondante de l'objet instancié.

parler moins et afficher le code :

<?php
/** 
*以下代码用于数据库操作类的封装
* 
* @author rex<rex.sp.li@aliyun.com> 
* @version 1.0
* @since 2015
*/


class Mysql{

//数据库连接返回值
private $conn;

/**
* [构造函数,返回值给$conn]
* @param [string] $hostname [主机名]
* @param [string] $username[用户名]
* @param [string] $password[密码]
* @param [string] $dbname[数据库名]
* @param [string] $charset[字符集]
* @return [null]

*/

function __construct($hostname,$username,$password,$dbname,$charset=&#39;utf8&#39;){
  $conn = @mysql_connect($hostname,$username,$password);
  if(!$conn){
    echo &#39;连接失败,请联系管理员&#39;;
    exit;
  }
  $this->conn = $conn;
  $res = mysql_select_db($dbname);
  if(!$res){
  echo &#39;连接失败,请联系管理员&#39;;
  exit;
  }
  mysql_set_charset($charset);
}
function __destruct(){
  mysql_close();
}
/**
* [getAll 获取所有信息]
* @param [string] $sql [sql语句]
* @return [array] [返回二维数组]
*/
function getAll($sql){
  $result = mysql_query($sql,$this->conn);
  $data = array();
  if($result && mysql_num_rows($result)>0){
    while($row = mysql_fetch_assoc($result)){
    $data[] = $row;
    }
  }
  return $data;
}
/**
* [getOne 获取单条数据]
* @param [string] $sql [sql语句]
* @return [array] [返回一维数组]
*/
function getOne($sql){
  $result = mysql_query($sql,$this->conn);
  $data = array();
  if($result && mysql_num_rows($result)>0){
    $data = mysql_fetch_assoc($result);
  }
  return $data;
}

/**
* [getOne 获取单条数据]
* @param [string] $table [表名]
* @param [string] $data [由字段名当键,属性当键值的一维数组]
* @return [type] [返回false或者插入数据的id]
*/

function insert($table,$data){
  $str = &#39;&#39;;
  $str .="INSERT INTO `$table` ";
  $str .="(`".implode("`,`",array_keys($data))."`) "; 
  $str .=" VALUES ";
  $str .= "(&#39;".implode("&#39;,&#39;",$data)."&#39;)";
  $res = mysql_query($str,$this->conn);
  if($res && mysql_affected_rows()>0){
      return mysql_insert_id();
  }else{
    return false;
  }
}
/**
* [update 更新数据库]
* @param [string] $table [表名]
* @param [array] $data [更新的数据,由字段名当键,属性当键值的一维数组]
* @param [string] $where [条件,‘字段名&#39;=‘字段属性&#39;]
* @return [type] [更新成功返回影响的行数,更新失败返回false]
*/
function update($table,$data,$where){
  $sql = &#39;UPDATE &#39;.$table.&#39; SET &#39;;
  foreach($data as $key => $value){
  $sql .= "`{$key}`=&#39;{$value}&#39;,";
  }
  $sql = rtrim($sql,&#39;,&#39;);
  $sql .= " WHERE $where";
  $res = mysql_query($sql,$this->conn);
  if($res && mysql_affected_rows()){
    return mysql_affected_rows();
  }else{
  return false;
  }
}

/**
* [delete 删除数据]
* @param [string] $table [表名]
* @param [string] $where [条件,‘字段名&#39;=‘字段属性&#39;]
* @return [type] [成功返回影响的行数,失败返回false]
*/
function del($table,$where){
  $sql = "DELETE FROM `{$table}` WHERE {$where}";
  $res = mysql_query($sql,$this->conn);
  if($res && mysql_affected_rows()){
    return mysql_affected_rows();
  }else{
  return false;
  }
}
}

Cours instancié :

<?php

//包含数据库操作类文件
include &#39;mysql.class.php&#39;;

//设置传入参数
$hostname=&#39;localhost&#39;;
$username=&#39;root&#39;;
$password=&#39;123456&#39;;
$dbname=&#39;aisi&#39;;
$charset = &#39;utf8&#39;;

//实例化对象

$db = new Mysql($hostname,$username,$password,$dbname);

//获取一条数据

$sql = "SELECT count(as_article_id) as count FROM as_article where as_article_type_id=1";
$count = $db->getOne($sql);

//获取多条数据

$sql = "SELECT * FROM as_article where as_article_type_id=1 order by as_article_addtime desc limit $start,$limit";
$service = $db->getAll($sql);

//插入数据

$arr = array(
&#39;as_article_title&#39;=>&#39;数据库操作类&#39;,
&#39;as_article_author&#39;=>&#39;rex&#39;,
);
$res = $db->insert(&#39;as_article&#39;,$arr);

//更新数据

$arr = array(
&#39;as_article_title&#39;=>&#39;实例化对象&#39;,
&#39;as_article_author&#39;=>&#39;Lee&#39;,
);
$where = "as_article_id=1";
$res = $db->update(&#39;as_article&#39;,$arr,$where);

//删除数据

$where = "as_article_id=1";
$res = $db->del(&#39;as_article&#39;,$where);

?>

Recommandations associées :

Encapsulation de la classe d'accès à la base de données PHP et fonctionnement de la connexion en mode singletonInstances de la classe d'encapsulation de la base de données

PHP accède à MYSQLClasse d'encapsulation de base de données

PHP accède à MYSQLClasse d'encapsulation de base de données(avec description de la fonction)_Tutoriel PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn