php语言 百分网手机站

PHP封装数据库操作类

时间:2020-09-26 08:37:41 php语言 我要投稿

PHP封装数据库操作类

  而PHP在访问数据库的时候又经常会出现各种问题,如字符编码问题、SQL语法错误问题、PHP处理数据记录对象和返回对象的`问题等。下面内容由小编为大家介绍PHP封装数据库操作类方法,供大家参考!

  优点:

  方便快捷, 数据库操作只需调用接口;

  统一编码(utf8),不易导致乱码

  结构清晰. 如处理前端请求的后台程序(test.php) + 表封装类(user.class.php) + 数据库封装类(db.class.php) + 配置信息(configuration.php)

  以下例子有四个文件: configuration.php + db.class.php + user.class.php + test.php,放在同一个目录下。

  首先是一个数据库配置的文件类configuration.php

  /**

  * 数据库配置信息

  */

  define('DB_HOST','localhost'); //服务器

  define('DB_USER','root'); //数据库用户名

  define('DB_PASSWORD',''); //数据库密码

  define('DB_NAME','test0'); //默认数据库

  define('DB_CHARSET','utf8'); //数据库字符集

  define('TIMEZONE',"PRC"); //时区设置

  ?>

  接下来就是数据库操作类db.class.php

  require_once("./configuration.php"); //引入配置常量文件

  date_default_timezone_set(TIMEZONE);

  /**

  * 类名:DB

  * 说明:数据库操作类

  */

  class

  DB

  {

  public

  $host; //服务器

  public

  $username; //数据库用户名

  public

  $password; //数据密码

  public

  $dbname; //数据库名

  public

  $conn; //数据库连接变量

  /**

  * DB类构造函数

  */

  public

  function DB($host=DB_HOST ,$username=DB_USER,$password=DB_PASSWORD,$dbname=DB_NAME)

  {

  $this->host = $host;

  $this->username = $username;

  $this->password = $password;

  $this->dbname = $dbname;

  }

  /**

  * 打开数据库连接

  */

  public

  function open()

  {

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

  mysql_select_db($this->dbname);

  mysql_query("SET CHARACTER SET utf8");

  }

  /**

  * 关闭数据连接

  */

  public

  function close()

  {

  mysql_close($this->conn);

  }

  /**

  * 通过sql语句获取数据

  * @return: array()

  */

  public

  function getObjListBySql($sql)

  {

  $this->open();

  $rs

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

  $objList

  = array();

  while($obj

  = mysql_fetch_object($rs))

  {

  if($obj)

  {

  $objList[] = $obj;

  }

  }

  $this->close();

  return

  $objList;

  }

  /**

  * 向数据库表中插入数据

  * @param:$table,表名

  * @param:$columns,包含表中所有字段名的数组。默认空数组,则是全部有序字段名

  * @param:$values,包含对应所有字段的属性值的数组

  */

  public

  function Data($table,$columns=array(),$values=array())

  {

  $sql

  = ' into '.$table

  .'( ';

  for($i

  = 0; $i

  < sizeof($columns);$i

  ++)

  {

  $sql

  .= $columns[$i];

  if($i

  < sizeof($columns) - 1)

  {

  $sql

  .= ',';

  }

  }

  $sql

  .= ') values ( ';

  for($i

  = 0; $i

  < sizeof($values);$i

  ++)

  {

  $sql

  .= "'".$values[$i]."'";

  if($i

  < sizeof($values) - 1)

  {

  $sql

  .= ',';

  }

  }

  $sql

  .= ' )';

  $this->open();

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

  $id

  = mysql__id($this->conn);

  $this->close();

  return

  $id;

  }

  /**

  * 通过表中的某一属性获取数据

  */

  public

  function getDataByAtr($tableName,$atrName,$atrValue){

  @$data

  = $this->getObjListBySql("SELECT * FROM ".$tableName." WHERE $atrName = '$atrValue'");

  if(count($data)!=0)return

  $data;

  return

  NULL;

  }

  /**

  * 通过表中的"id",删除记录

  */

  public

  function ($tableName,$atrName,$atrValue){

  $this->open();

  $Result

  = false;

  if(mysql_query("DELETE FROM ".$tableName." WHERE $atrName = '$atrValue'")) $Result

  = true;

  $this->close();

  if($Result) return

  true;

  else

  return false;

  }

  /**

  * 更新表中的属性值

  */

  public

  function updateParamById($tableName,$atrName,$atrValue,$key,$value){

  $db

  = new

  DB();

  $db->open();

  if(mysql_query("UPDATE ".$tableName." SET $key = '$value' WHERE $atrName = '$atrValue' ")){ //$key不要单引号

  $db->close();

  return

  true;

  }

  else{

  $db->close();

  return

  false;

  }

  }

  /*

  * @description: 取得一个table的所有属性名

  * @param: $tbName 表名

  * @return:字符串数组

  */

  public

  function fieldName($tbName){

  $resultName=array();

  $i=0;

  $this->open();

  $result

  = mysql_query("SELECT * FROM $tbName");

  while

  ($property

  = mysql_fetch_field($result)){

  $resultName[$i++]=$property->name;

  }

  $this->close();

  return

  $resultName;

  }

  }

  ?>

  接下来是测试了。我在phpmyadmin中建了一个test0数据库,里面建一张表user。然后用php写一个user类对应数据库中的user表。

  user.class.php

  require_once("./db.class.php");

  class

  User{

  public

  $name = NULL;

  public

  $password = NULL;

  /**

  * 构造函数

  */

  public

  function __construct($name,$password){

  $this->name = $name;

  $this->password = $password;

  }

  public

  function (){

  $db

  = new

  DB();

  $resultid

  = $db->Data("user",array(),array('',$this->name,$this->password));

  return

  $resultid;

  }

  public

  static function getUserById($uid){

  $db

  = new

  DB();

  return

  $db->getDataByAtr("user",'uid',$uid);

  }

  public

  static function getUserByName($name){

  $db

  = new

  DB();

  @$data

  = $db->getObjListBySql("SELECT * FROM user WHERE name = '$name'");

  if(count($data)!=0)return

  $data;

  else

  return null;

  }

  public

  static function getAllUser(){

  $db

  = new

  DB();

  @$data

  = $db->getObjListBySql("SELECT * FROM user");

  if(count($data)!=0) return

  $data;

  else

  return null;

  }

  public

  static function ByUid($uid){

  $admin

  = Admin::getAdminById($uid);

  $db

  = new

  DB();

  if($db->("user","uid",$uid)) return

  true;

  else

  return false;

  }

  }

  ?>

  测试程序: test.php

  header("Content-Type:text/html; charset=utf8");

  require_once("./user.class.php");

  $user

  = new

  User("HelloWorld","123456");

  $user->();

  $users

  = User::getAllUser();

  foreach

  ($users

  as $u) {

  echo

  "

  ".$u->name."

  ".$u->password."

  ";

  }

  ?>

  运行结果:


【PHP封装数据库操作类】相关文章:

PHP对数据库MySQL的连接操作08-24

php备份数据库类的方法09-30

PHP访问数据库08-26

php操作mysql步骤09-19

PHP文件怎么操作09-01

PHP中如何定义类及其成员属性与操作09-23

PHP如何创建数据库09-30

PHP网络操作函数讲解09-30

php数组操作方法11-07