PHP基础封装简单的MysqliHelper类
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类的更多相关文章
- 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- Python之自定义封装一个简单的Log类
参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类《转载》
Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676
- Java基础语法<七> 对象与类 封装
笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 1.1 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个 ...
- 简单封装 Delphi 的 DirectX类
var CreatorRenderer : TCreatorRenderer; Form1: TForm1; 窗体代码: {$R *.dfm} procedure TForm1.FormCreate ...
- 【转】Python基础-封装与扩展、静态方法和类方法
[转]Python基础-封装与扩展.静态方法和类方法 一.封装与扩展 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码:而外部使用者只知道一个接口(函数),只要接口(函数 ...
- 模块的封装之C语言类的继承和派生
[交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我 ...
- ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 动作结果 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 动作结果 前面的章节中,我们一直使用简单的 C# 类作为控制器. 虽 ...
随机推荐
- 2016.8.14安装myplayer心得
安装mplayer时,我有两个os是not found状态,我在其他地方找到后 which mplayer,找到mplayer的配置界面,找到not found的部分,并且从usr/lib中找到相应的 ...
- Python基本数据类型之int
一.int的范围 2.7: 32位:-2^31~2^31-1 64位:-2^63~2^63-1 3.5: 在3.5中init长度理论上是无限的 二.python内存机制 在一般情况下当变量被赋值后,内 ...
- [COCI2012Final]Pro1
校内OJ上的题. 数据范围非常小,用暴搜就可以,加点剪枝阶乘级别的复杂度竟然可以跑得比$O(N^4)$的算法还要快QAQ. 我用的是Floyd,参考了别人的代码.大概就是先跑个Floyd把点点之间路径 ...
- js012-DO2和DOM3
js012-DO2和DOM3 本章内容: DOM2和DOM3的变化 操作样式的ODM API DOM 遍历与范围 DOM2级核心:在一级核心基础上构建,为节点添加了更多方法和属性 DOM2级视图:为文 ...
- c++异常捕获
概念: “C++异常”就是 try{}catch(...){} “SEH异常”就是 __try{} __except(-//){} (关于这两种异常,如有不了解的地方,网上有很多资料可以参考) 目前微 ...
- Spring解析实践
这几天重新把传智播客的黎活明的Spring2.5的教程学习了一遍,跟着上面的解析Spring的过程跟着制作了一个简单的Spring IOC和Spring AOP,先在贴上来给大家参考一下. 1:管理B ...
- VclZip压缩文件夹
压缩指定路径MyZipDir下的文件夹b及b目录下的所有文件和文件b.txt function ZipDir(zipMode:Integer;zipControl:TVCLZip;MyZipName, ...
- SublimeText2使用笔记
将Sublime Text2 加入右键菜单(转) 1. 运行中输入 regedit 打开注册表 2. 在HKEY_CLASSES_ROOT/*/shell/ 下新建’项’ ,名称自己觉得.我用的是Su ...
- (自用)专业排版套装:CTeX + TeXStudio
\documentclass[UTF8,landscape]{ctexart}%UTF8,ctexart中文支持,landscape横向版面 \usepackage{tikz}%画图 \usepack ...
- nginx的简单操作
1.今天在nginx下访问403,发现图片访问出现403,其他没有问题,看来下图片的文件夹没有读写的权限,修改下权限就OK了! 2.重启nginx 在env/nginx/sbin目录下输入:nginx ...