韦德国际_韦德国际1946官方网站_韦德国际1946手机版
做最好的网站

mysql操作封装,2个标准的php操作mysql的封装类

日期:2019-05-22编辑作者:韦德国际1946手机版
<?PHP
    class Database
    {
        var $db;
        var $result;
        var $lastQuery;
        var $numQueries = 0;
        var $error;
        var $showErrors = true;

        function Database($host, $user, $password, $dbname)
        {
            $this->db = mysql_connect($host, $user, $password) or die(mysql_error());
            mysql_select_db($dbname, $this->db) or die(mysql_error());
        }

        function query($sql)
        {
            $this->error = "";
            $this->lastQuery = $sql;

            if($this->showErrors)
                $this->result = mysql_query($sql, $this->db) or die(mysql_error() . "<br/>--<br/>$sql");
            else
                $this->result = mysql_query($sql, $this->db) or ($this->error = mysql_error());

            $this->numQueries  ;
        }
    }
?>

卷入的类:

<?php
//连接数据库
function connect(){
  $link = mysql_connect(DB_HOST,DB_USER,DB_PWD)or die("数据库连接失败Error:".mysql_errno().":".mysql_error());//mysql_errno()指mysql数据操作的错误新闻的数字编码,
  //mysql_error()指mysql数据操作的错误信息
  mysql_set_charset(DB_CHARSET);
  mysql_select_db(DB_mysql操作封装,2个标准的php操作mysql的封装类。DBNAME)or die("钦点数据库展开退步");
  return $link;
}

第壹先戏弄下mysqli与mysql,前者是后世的革新版,笔者的ps不补助mysql相关函数,而且本人看的是w叁school上的科目,呵呵,w三school上的代码用的是旧版本的mysql函数,笔者去,让本身贰个个百mysqli类别函数的用法。。。

<?php
/********************************************* 
类名: PageSupport
功能:分页显示MySQL数据库中的数据 
***********************************************/ 
class PageSupport{ 
    //属性
    var $sql;                    //所要显示数据的SQL查询语句 
    var $page_size;                //每页显示最多行数 

    var $start_index;            //所要显示记录的首行序号
    var $total_records;            //记录总数 
    var $current_records;        //本页读取的记录数 
    var $result;                //读出的结果 

    var $total_pages;            //总页数  
    var $current_page;            //当前页数
    var $display_count = 30;     //显示的前几页和后几页数

    var $arr_page_query;        //数组,包含分页显示需要传递的参数 

    var $first;
    var $prev;
    var $next;
    var $last;

    //方法
/********************************************* 
构造函数:__construct()
输入参数:            
        $ppage_size:每页显示最多行数    
***********************************************/ 
 function PageSupport($ppage_size)
 { 
    $this->page_size=$ppage_size; 
    $this->start_index=0;
 } 


/********************************************* 
构造函数:__destruct()
输入参数:            
***********************************************/ 
 function __destruct()
 {

 }

/********************************************* 
get函数:__get()
***********************************************/ 
 function __get($property_name)
 {  
     if(isset($this->$property_name)) 
     { 
            return($this->$property_name); 
     } 
     else 
     { 
            return(NULL); 
     } 
 }

/********************************************* 
set函数:__set()
***********************************************/ 
 function __set($property_name, $value) 
 {     
    $this->$property_name = $value; 
 } 

/********************************************* 
函数名:read_data
功能:    根据SQL查询语句从表中读取相应的记录
返回值:属性二维数组result[记录号][字段名]
***********************************************/ 
 function read_data()
 { 
    $psql=$this->sql; 

    //查询数据,数据库链接等信息应在类调用的外部实现
    $result=mysql_query($psql) or die(mysql_error()); 
    $this->total_records=mysql_num_rows($result); 

    //利用LIMIT关键字获取本页所要显示的记录
    if($this->total_records>0) 
    {
        $this->start_index = ($this->current_page-1)*$this->page_size;
        $psql=$psql.    " LIMIT ".$this->start_index." , ".$this->page_size; 

        $result=mysql_query($psql) or die(mysql_error()); 
        $this->current_records=mysql_num_rows($result); 

        //将查询结果放在result数组中
        $i=0; 
        while($row=mysql_fetch_Array($result))
        { 
            $this->result[$i]=$row; 
            $i  ; 
        } 
    }


    //获取总页数、当前页信息
    $this->total_pages=ceil($this->total_records/$this->page_size);  

    $this->first=1;
    $this->prev=$this->current_page-1;
    $this->next=$this->current_page 1;
    $this->last=$this->total_pages;
 }

 /********************************************* 
函数名:standard_navigate()
功能:    显示首页、下页、上页、未页
***********************************************/ 
 function standard_navigate() 
 {    
    echo "<div align=center>";
    echo "<form action=".$_SERVER['PHP_SELF']." method="get">";

    echo "<font color = red size ='4'>第".$this->current_page."页/共".$this->total_pages."页</font>"; 
    echo "    ";

    echo "跳到<input type="text" size=Ř" name="current_page" value='".$this->current_page."'/>页";
    echo "<input type="submit" value="提交"/>";


    //生成导航链接
    if ($this->current_page > 1) {
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->first.">首页</A>|"; 
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->prev.">上一页</A>|"; 
    }

    if( $this->current_page < $this->total_pages) {
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->next.">下一页</A>|";
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->last.">末页</A>"; 
    }

    echo "</form>";    
    echo "</div>";

 } 

  /********************************************* 
函数名:full_navigate()
功能:    显示首页、下页、上页、未页  
生成导航链接 如1 2 3 ... 10 11
***********************************************/ 
 function full_navigate() 
 {    
    echo "<div align=center>";
    echo "<form action=".$_SERVER['PHP_SELF']." method="get">";

    echo "<font color = red size ='4'>第".$this->current_page."页/共".$this->total_pages."页</font>"; 
    echo "    ";

    echo "跳到<input type="text" size=Ř" name="current_page" value='".$this->current_page."'/>页";
    echo "<input type="submit" value="提交"/>";

    //生成导航链接 如1 2 3 ... 10 11
    $front_start = 1;
    if($this->current_page > $this->display_count){
        $front_start = $this->current_page - $this->display_count;
    }
    for($i=$front_start;$i<$this->current_page;$i  ){
        echo "<a href=".$_SERVER['PHP_SELF']."?page=".$i.">[".$i ."]</a> ";    
    }

    echo "[".$this->current_page."]";

    $displayCount = $this->display_count;
    if($this->total_pages > $displayCount&&($this->current_page $displayCount)<$this->total_pages){
        $displayCount = $this->current_page $displayCount;
    }else{
        $displayCount = $this->total_pages;
    }

    for($i=$this->current_page 1;$i<=$displayCount;$i  ){
        echo "<a href=".$_SERVER['PHP_SELF']."?current_page=".$i.">[".$i ."]</a> ";    
    }

    //生成导航链接
    if ($this->current_page > 1) {
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->first.">首页</A>|"; 
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->prev.">上一页</A>|"; 
    }

    if( $this->current_page < $this->total_pages) {
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->next.">下一页</A>|";
      echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->last.">末页</A>"; 
    }

    echo "</form>";    
    echo "</div>";

 } 

} 
?>

//记录插入操作
function insert($table,$array){
  $keys = join(",",array_keys($array));//array_keys()重临数组中的键名,重返值是2个包蕴全体键名的数组
  $values = "'".join("','",array_values($array))."'";//array_values()重临数组中的键值,重返值是1个包罗全部键值的索引数组
  $sql = "insert{$table}($keys)values($values)";
  mysql_query($sql);
  return mysql_insert_id();//mysql_insert_id()再次回到上一步insert操作爆发的id
}

  php伍以上的本子,建议利用mysqli和PDO。有个网址,我刚开采的:http://www.runoob.com

 

//记录更新操作
function update($table,$array,$where=null){
  foreach($array as $key=>$val){
    if($str==null){
      $sep="";
    }else{
      $sep=",";
    }
    $str.=$sep.$key."='".$val."'";
  }
  $sql="update {$table} set {$str} ".($where==null?null:"where".$where);
  mysql_query($sql);
  return mysql_affected_rows();//mysql_affected_rows()重返上三次mysql操作受影响的笔录条数
}

  mysqli和PDO各有各的优势。PDO应用于1第22中学数据库,是1种通用的写法;而mysqli是专程针对mysql的。两个都以面向对象,而mysqli还巩固了API接口。两个都援助预管理语句,预管理语句可避防卫SQL注入,对于web项指标安全性是不行重大的。因为笔者昨日专程开垦mysql项目,故而就选用mysqli吧,PDO只领会就可以。PDO的学习能够参照他事他说加以考察下面11分网站。

 

//记录删除操作
function delete($table,$where=null){
  $where=$where==null?null:" where ".$where;
  $sql = "delete from {$table} {$where}";
  mysql_query($sql);
  return mysql_affected_rows();
}

  下边说mysqli操作数据库。

 

//查询单条记录
function fetchOne($sql,$result_type=MYSQL_ASSOC){
  $result=mysql_query($sql);
  $row = mysql_fetch_array($result,$result_type);//mysql_fetch_array()从结果集中获得壹行作为涉及数组,或数字数组,MYSQL_ASSOC是涉及数组,MYSQL_NUM是索引数组,MYSQL_BOTH都包括
  return $row;
}

 做个小目录:

写在php页面里面包车型客车代码:

//查询多条记下
function fetchAll($sql,$result_type=MYSQL_ASSOC){
  $result=mysql_query($sql);
  while(@$row=mysql_fetch_array($result,$result_type)){
    $rows[]=$row;
  }
  return $rows;
}

一.连连数据库

<div class="index">
<?php 

    include_once("fenye_php.php");   //引入类

    ///////////////////////////////////////////////////////////////////////
    $con = mysql_connect("localhost","root",""); 
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());    
      }

    mysql_select_db("myblog", $con);    //选取数据库

    $PAGE_SIZE=10;            //设置每页显示的数目

    ///////////////////////////////////////////////////////////////////////

    $pageSupport = new PageSupport($PAGE_SIZE); //实例化PageSupport对象

    $current_page=$_GET["current_page"];//分页当前页数

    if (isset($current_page)) {

        $pageSupport->__set("current_page",$current_page);

    } else {

        $pageSupport->__set("current_page",1);

    }


    $pageSupport->__set("sql","select * from article ");     
    $pageSupport->read_data();//读数据

    if ($pageSupport->current_records > 0) //如果数据不为空,则组装数据
    {
        for ($i=0; $i<$pageSupport->current_records; $i  )
        {
            $title = $pageSupport->result[$i]["title"];
            $content = $pageSupport->result[$i]["content"];

            $part=substr($content,0,400);
            //循环输出每条数据
            echo '<div >        
                <div >'.$title.'</div>
                <div >'.$part.'</div>
                <div >
                   <a  >update</a>&nbsp;&nbsp;&nbsp;<a  >delet</a>
                </div>
            </div>';
        }
    }
    $pageSupport->standard_navigate(); //调用类里面的这个函数,显示出分页HTML
    //关闭数据库
    mysql_close($con);
 ?>
</div>

//获得结果凑集记录的条数
function getResultNum($sql){
  $result=mysql_query($sql);
  return mysql_num_rows($result);//mysql_num_rows()获得结果集中央银行的数目
}

二.关门连接

 

叁.创办数据库


4.创建表

伍.插入数据

陆.插入多条数据

7.预管理语句

八.读取数据

9.where

10.order by

11.update

12.delete

13.ODBC

 

 

 

老是数据库:

mysqli(面向对象)

图片 1

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

图片 2

注意在以上面向对象的实例中 $connect_error 是在 PHP 5.2.9 和 5.3.0 中添加的。如果你需要兼容更早版本 请使用以下代码替换:

// 检测连接
if (mysqli_connect_error()) {
    die("Database connection failed: " . mysqli_connect_error());
}

本文由韦德国际发布于韦德国际1946手机版,转载请注明出处:mysql操作封装,2个标准的php操作mysql的封装类

关键词: 数据库 PHP mysql 数据层 数据库类

replace函数的行使,函数使用

replace函数语法: /*mysql select * from sales; ----- ------------ -------- -------- -------- ------ ------------ | num | name | winter | spring | ...

详细>>

mysql将timestamp类型调换到date类型数据,timestamp类

可以选用date_mysql将timestamp类型调换到date类型数据,timestamp类型自动更新。format函数: 1.问题:列名为create_time代表本身...

详细>>

mysql方便的询问,一条慢查询sql的的辨析

[Python]代码 【mysql】一条慢查询sql的的解析,mysql查询sql 以此是本身在jobbole.com 上看看的 先交由数据表table结构 mysq...

详细>>

MSSQL远程连接

[Python]代码 背景:陈设集团自个儿研究开发的ERP系统. # -*- coding: utf-8 -*-import pymssqlconn=pymssql.connect(host=".",user="sa",pas...

详细>>