MysqliHelper.class.php

   1: <?php

   2:  

   3: /**

   4: * MysqliHelper

   5: * [面向对象的MysqliHelper的简单封装]

   6: */

   7: class MysqliHelper

   8: {

   9:     private static $mysqli;

  10:     private static $host='localhost';

  11:     private static $uid='root';

  12:     private static $pwd='1234';

  13:     private static $dbName='test2';

  14:  

  15:     /**

  16:      * [connect 创建连接]

  17:      */

  18:     public static function connect()

  19:     {

  20:         if(isset(self::$mysqli))return;

  21:         self::$mysqli = new MySQLi(self::$host,self::$uid,self::$pwd,self::$dbName);

  22:         !empty(self::$mysqli) or die("数据库连接失败:".self::$mysqli->connect_error);

  23:         self::$mysqli->query("set names utf8");

  24:     }

  25:  

  26:     /**

  27:      * [execute_dml 执行增删改操作]

  28:      * @param  [string] $sql [DML语句]

  29:      * @return [int]      [操作成功返回受影响行数,否则返回-1]

  30:      */

  31:     public static function execute_dml($sql)

  32:     {

  33:         self::connect();

  34:         $result = self::$mysqli->query($sql) or die('执行DML语句时出错:'.self::$mysqli->error);

  35:         if (!$result) {

  36:             return -1;

  37:         } else {

  38:             return self::$mysqli->affected_rows;

  39:         }

  40:     }

  41:  

  42:     /**

  43:      * [execute_dql 执行查询操作]

  44:      * @param  [string] $sql [DQL语句]

  45:      * @return [mysqli_result]      [返回查询结果集]

  46:      */

  47:     public static function execute_dql($sql)

  48:     {

  49:         self::connect();

  50:         $result = self::$mysqli->query($sql) or die('执行DQL语句时出错:'.self::$mysqli->error);

  51:         return $result;

  52:     }

  53:  

  54:     /**

  55:      * [show_table_data 显示表数据]

  56:      * @param  [string] $tableName [表名]

  57:      * @return [string]            [HTML]

  58:      */

  59:     public static function show_table_data($tableName)

  60:     {

  61:         $result=self::execute_dql("select * from $tableName");

  62:         //显示表头信息:

  63:         echo "<br/>数据表:".$result->fetch_field()->table."  总行数:".$result->num_rows;

  64:         $tableData="<table border='1' cellpadding='5'><tr>";

  65:         $fieldsCount = $result->field_count;

  66:         for ($i=0; $i <$fieldsCount; $i++) { 

  67:             $tableData.= "<th>".$result->fetch_field_direct($i)->name."</th>";

  68:         }

  69:         $tableData.="</tr>";

  70:  

  71:         //显示数据信息:

  72:         while ($row = $result->fetch_object()) {

  73:             $tableData.="<tr>";

  74:             foreach ($row as $value) {

  75:                 $tableData.="<td>$value</td>";

  76:             }

  77:             $tableData.="</tr>";

  78:         }

  79:         $tableData.="</table>";

  80:  

  81:         $result->free();

  82:         self::$mysqli->close();

  83:         //或者 mysqli_close(self::$mysqli);

  84:         echo $tableData;

  85:     }

  86:  

  87: }

  88: ?>

 

调用示例:

 

   1: <?php

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

   3:  

   4: //自定义MysqliHelper的测试与使用

   5: //============================================

   6:  

   7: //引用自定义的MysqliHelper类

   8: require_once "MysqliHelper.class.php";

   9:  

  10: // 查

  11: // $sql = "select * from userinfo where id>8";

  12: // 增

  13: // $sql = "insert into userinfo(uName,uAge,uPwd) values('测试08',25,MD5('1234'));";

  14: // 删

  15: // $sql = "delete from userinfo where id=24";

  16: // 改

  17: $sql = "update userinfo set uAge=28 where Id=21";

  18:  

  19: //执行查询语句

  20: // $result = MysqliHelper::execute_dql($sql);

  21:  

  22: //执行增删改语句

  23: $result = MysqliHelper::execute_dml($sql);

  24: if ($result==-1) {

  25:     echo "操作失败:(";

  26: } else {

  27:     echo "操作成功:".$result."行受影响";

  28: }

  29:  

  30: //显示表数据

  31: MysqliHelper::show_table_data("userinfo");

  32:  

  33: ?>

PHP基础封装简单的MysqliHelper类的更多相关文章

  1. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  2. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  3. Python之自定义封装一个简单的Log类

    参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...

  4. Python+Selenium中级篇之8-Python自定义封装一个简单的Log类《转载》

    Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676

  5. Java基础语法<七> 对象与类 封装

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 1.1 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个 ...

  6. 简单封装 Delphi 的 DirectX类

    var CreatorRenderer  : TCreatorRenderer; Form1: TForm1; 窗体代码: {$R *.dfm} procedure TForm1.FormCreate ...

  7. 【转】Python基础-封装与扩展、静态方法和类方法

    [转]Python基础-封装与扩展.静态方法和类方法 一.封装与扩展 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码:而外部使用者只知道一个接口(函数),只要接口(函数 ...

  8. 模块的封装之C语言类的继承和派生

    [交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我 ...

  9. ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 动作结果 前面的章节中,我们一直使用简单的 C# 类作为控制器. 虽 ...

随机推荐

  1. linux下制作win7安装盘(mint、ubuntu、debian)

    今天替同事装系统.因为现在的debian系系统都可以直接用dd拷贝iso到u盘的方法进行安装,所以,想当然的用dd来制作windows安装盘.没反应!所以有了下面的方法. 1. 将u盘格式化为ntfs ...

  2. sed学习笔记

    sed是一个文本处理工具,可以根据给出的条件,自动对文本进行处理.在使用之前,需要知道的有三点:1. sed是逐行进行处理:2. sed不对原文件进行修改:3. sed默认是将处理后的内容打印到标准输 ...

  3. 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例

    一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...

  4. 常用sql语句整理[SQL Server]

    1. 存储过程 CREATE PROCEDURE [dbo].[bbs_move_createtopic] @fid smallint, @iconid smallint, @curtid INT O ...

  5. MOOCULUS微积分-2: 数列与级数学习笔记 1. Sequences

    此课程(MOOCULUS-2 "Sequences and Series")由Ohio State University于2014年在Coursera平台讲授. PDF格式教材下载 ...

  6. 在Ubuntu上如何往fcitx里添加输入法

    Ubuntu 16.04引入了一个新的包管理工具apt, 用法与apt-get类似. 在终端用apt搜索fcitx支持的输入法 apt search fcitx All Fcitx related p ...

  7. Vijos 1816统计数字(计数排序)

    传送门 Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自 ...

  8. JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理

    Oracle库中userinfo表borth字段是Date类型,age年纪字段是int类型.age字段要根据borth来自动计算 先说一下我遇到的问题: insert into的时候遇到日期转换类型错 ...

  9. java Base64算法的使用

    Base64是常见的网络加密算法,Base64编码可用于在HTTP环境下传递较长的标识信息.详见 Base64介绍 1 自定义的base64算法 Base64Encrypt.java public c ...

  10. UVA11178 Morley's Theorem(基础模板)

    题目链接 题意:给出A,B, C点坐标求D,E,F坐标,其中每个角都被均等分成三份   求出 ABC的角a, 由 BC 逆时针旋转 a/3 得到BD,然后 求出 ACB 的角a2, 然后 由 BC顺时 ...