<?php
    //这是一个工具类;作用是完成对数据库的操作;
    class SqlHelper{
        public $conn;
        public $dbname="exam";
        public $username="root";
        public $password="123";
        public $host="192.168.1.100";

//构造函数(连接数据库);
        public function __construct(){
            $this->conn=mysql_connect($this->host,$this->username,$this->password);
            if(!$this->conn){
                die("连接失败".mysql_errno());
            }

    //设置字符编码;
            mysql_set_charset('utf8');
            mysql_select_db($this->dbname,$this->conn);
        }

//执行dql语句
        public function execute_dql($sql){
            $res=mysql_query($sql,$this->conn) or die(mysql_errno());
            return $res;
        }
        
        //执行dql语句,但是返回的是一个数组
        public function execute_dql2($sql){
            $arr=array();
            $res=mysql_query($sql,$this->conn) or die(mysql_errno());
            $i=0;
            //把$res的东西给$arr
            while($row=mysql_fetch_array($res)){
                $arr[$i]=$row;
                $i++;
            }
            //这里可以马上关闭;
            mysql_free_result($res);
            return $arr;
        }
        
        
        //执行dml语句
        public function execute_dml($sql){
            $b=mysql_query($sql,$this->conn) or die(mysql_errno());
            if(!$b){
                return 0;
            }else{
                if(mysql_affected_rows($this->conn)>0){
                    return 1;//表示只能执行成功
                }else {
                    return 2;//表示没有行受到影响;
                }
            }
        }
        
        
        //封装
        //考虑分页情况的查询
        //$sql="select * from where 表名 limit 0,6 ";
        //$sql="select count(*) from 表名";
        public function execute_dql_fenye($sql1,$sql2,$fenyePage){
            //得到分页的数据
            $res=mysql_query($sql1,$this->conn) or die (mysql_errno());
            //$res=>array();
            //将数据转移到数组
            $arr=array();
            while($row=mysql_fetch_assoc($res)){
                $arr[]=$row;
            }
            //释放资源
            mysql_free_result($res);
            //把数组赋值给$fenyePage
            $fenyePage->res_array=$arr;
            
            $res2=mysql_query($sql2,$this->conn) or die (mysql_errno());
            if($row=mysql_fetch_row($res2)){
                $fenyePage->pageCount=ceil($row[0]/$fenyePage->pageSize);
                $fenyePage->rowCount=$row[0];
            }
            mysql_free_result($res2);
            
            //把导航信息也封装到$fenyePage中;
            
            //显示上一页和下一页
            $navigate="";
            if($fenyePage->pageNow>1){
                $prePage=$fenyePage->pageNow-1;
                $navigate="<a href='{$fenyePage->gotoUrl}?pageNow=$prePage'>上一页</a>";
            }
            if($fenyePage->pageNow<$fenyePage->pageCount){
                $nextPage=$fenyePage->pageNow+1;
                $navigate.="<a href='{$fenyePage->gotoUrl}?pageNow=$nextPage'>下一页</a>";
            }
            
            //显示首页和末页
            $navigate.= "<a href='{$fenyePage->gotoUrl}?pageNow=1'>首页</a>";
            $navigate.= "<a href='{$fenyePage->gotoUrl}?pageNow=$fenyePage->pageCount'>末页</a>";
            
                 //显示当前页和共有多少页
            $navigate.= "当前页{$fenyePage->pageNow}/总共{$fenyePage->pageCount}页";

//以下显示多少页
            $page_whole=2;
            $start=floor(($fenyePage->pageNow-1)/$page_whole)*$page_whole+1;
            $index=$start;
            $min=floor(($fenyePage->pageCount-1)/$page_whole)*$page_whole;
            //向前整体翻页;
            //当前pageNow在10内,就没有翻页;
            if($fenyePage->pageNow>$page_whole){
                $navigate.= "<a href='{$fenyePage->gotoUrl}?pageNow=".($start-1)."'> <<</a>";
            }
            
            //如何定义start (1到10)(floor(pageNow-1)/10)*10+1; (11到20)(floor(pageNow-1/10))*10+1
            if($fenyePage->pageNow<=$min){
                for($start;$start<$index+$page_whole;$start++){
                    $navigate.="<a href='{$fenyePage->gotoUrl}?pageNow=$start'>[$start]</a>";
                }
            }else {
                for ($start;$start<=$fenyePage->pageCount;$start++){
                    $navigate.="<a href='{$fenyePage->gotoUrl}?pageNow=$start'>[$start]</a>";
                }
            }
                
            //向后整体翻页
            //向后翻页条显示条件;
            //
            //         $min=floor($pageCount-1/$page_whole)
            //
            //            if($pageNow<=$min*$pagewhole)
            //            
            if($fenyePage->pageNow<=$min){
            $navigate.= "<a href='{$fenyePage->gotoUrl}?pageNow=$start'> >> </a>";
            }
            
                
            $fenyePage->navigate=$navigate;
        }
        
        //关闭连接方式
        public function close_connect(){
            if(!empty($this->conn)){
                mysql_close($this->conn);
            }
        }
    }
?>

PHP原始的数据库操作的更多相关文章

  1. SQLite数据库操作 (原始操作)

    android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API, 使用该类可以完成对数据进行添加(Create).查询(Retrieve).更新(Update)和删除( ...

  2. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

  3. laravel框架总结(七) -- 数据库操作

      1.使用DB门面进行基本操作 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.delet ...

  4. Python之路【第八篇】:堡垒机实例以及数据库操作

    Python之路[第八篇]:堡垒机实例以及数据库操作   堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...

  5. Python之路:堡垒机实例以及数据库操作

    一.堡垒机前戏 开发堡垒机之前,先学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  6. 1-1hibernate数据库操作基础

    一.纯原始数据库连接详见http://www.cnblogs.com/lukelook/p/7845757.html 1.Class.forName("oracle.jdbc.driver. ...

  7. django的模型类管理器-----------数据库操作的封装

    模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除 ...

  8. Qt: 数据库操作;

    QT的数据库操作有两种方式: 一) 使用QsqlTableModel类, 可以配合QTableView进行界面显示并进行数据库操作, 这种方法比较方便快捷: 二)  使用原始SQL语言, 利用INSE ...

  9. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

随机推荐

  1. C程序设计语言练习题1-10

    练习1-10 编写一个将输入复制到输出的程序,并将起重的制表符替换为\t,把回退符替换成\b,把反斜杠替换为\\.这样可以将制表符和回退符以可见的方式显示出来. 代码如下: #include < ...

  2. Activiti工作流学习-----基于5.19.0版本(2)

    二.activiti.cfg.xml的其他bean节点配置 2.1 新特性:Job Executor和Async Executor 从5.17.0版本的activiti开始提供作业执行者(Job Ex ...

  3. HTTP协议细节

    一]客服端  -->  服务端        1>结构            a)请求行            b)请求头            c)请求体:请求的内容,如果没有,就是空白 ...

  4. 在docker以FPM-PHP运行php,慢日志导致的BUG分析

    问题描述: 最近将IOS书城容器化,切换流量后.正常的业务测试了一般,都没发现问题.线上的错误监控系统也没有报警,以为迁移工作又告一段落了,暗暗的松了一口气.紧接着,报警邮件来了,查看发现是一个苹果支 ...

  5. Ushare应用

    Ushare应用 Openwrt 系统功能强大,主要优势在于其开放性和可扩展性,Openwrt 安装ushare后,可将路由器变身为一个功能强大的家庭upnp流媒体服务器! 打开网上邻居,会显示发现u ...

  6. tyvj1185营业额统计

    描述 Description 营业额统计  Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况.  Tiger拿出了公司的账本,账本上记录了公司 ...

  7. hdu3415:最大k子段和,单调队列

    题目大意:给定长度为n的数组,求出最大的区间和,其中区间长度在[1,k]之间 分析: 学动态规划的时候我们会遇到一个经典问题 最大子段和,这个题跟最大子段和很类似 不同的是区间的长度有限制,无法用原算 ...

  8. Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例

    效果图 一共3个页面:注册页,欢迎页,用户列表页 很简单的例子,主要是为了把流程走通,没有各种验证. 注册页: 欢迎页: 用户列表页: 源码地址 https://github.com/lemonbar ...

  9. javascript 中 "!function(){}() " 是什么意思?

    叹号后面跟函数!function和加号后面跟函数+function都是跟(function(){})();这个函数是一个意思,都是告诉浏览器自动运行这个匿名函数的,因为!+()这些符号的运算符是最高的 ...

  10. 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

    矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 ...