mysql 单例模式_php基于单例模式封装mysql类完整实例
本文实例讲述了php基于单例模式封装mysql类。分享给大家供大家参考,具体如下:
类:
header("content-type:text/html;charset=utf-8");
//封装一个类
/*
掌握满足单例模式的必要条件
(1)私有的构造方法-为了防止在类外使用new关键字实例化对象
(2)私有的成员属性-为了防止在类外引入这个存放对象的属性
(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象
(4)公有的静态方法-为了让用户进行实例化对象的操作
*/
class db{
//三私一共
//私有的静态属性
private static $dbcon=false;
//私有的构造方法
private function __construct(){
$dbcon=@mysql_connect("localhost","root","root");
mysql_select_db("small2",$dbcon) or die("mysql_connect error");
mysql_query("set names utf8");
}
//私有的克隆方法
private function __clone(){}
//公用的静态方法
public static function getIntance(){
if(self::$dbcon==false){
self::$dbcon=new self;
}
return self::$dbcon;
}
//打印数据
public function p($arr){
echo "
";
print_r($arr);
echo "
";
}
public function v($arr){
echo "
";
var_dump($arr);
echo "
";
}
//执行语句
public function query($sql){
$query=mysql_query($sql);
return $query;
}
/**
* 查询某个字段
* @param
* @return string or int
*/
public function getOne($sql){
$query=$this->query($sql);
return mysql_result($query,0);
}
//获取一行记录,return array 一维数组
public function getRow($sql,$type="assoc"){
$query=$this->query($sql);
if(!in_array($type,array("assoc",'array',"row"))){
die("mysql_query error");
}
$funcname="mysql_fetch_".$type;
return $funcname($query);
}
//获取一条记录,前置条件通过资源获取一条记录
public function getFormSource($query,$type="assoc"){
if(!in_array($type,array("assoc","array","row")))
{
die("mysql_query error");
}
$funcname="mysql_fetch_".$type;
return $funcname($query);
}
//获取多条数据,二维数组
public function getAll($sql){
$query=$this->query($sql);
$list=array();
while ($r=$this->getFormSource($query)) {
$list[]=$r;
}
return $list;
}
//获得最后一条记录id
public function getInsertid(){
return mysql_insert_id();
}
/**
* 定义添加数据的方法
* @param string $table 表名
* @param string orarray $data [数据]
* @return int 最新添加的id
*/
public function insert($table,$data){
//遍历数组,得到每一个字段和字段的值
$key_str='';
$v_str='';
foreach($data as $key=>$v){
if(empty($v)){
die("error");
}
//$key的值是每一个字段s一个字段所对应的值
$key_str.=$key.',';
$v_str.="'$v',";
}
$key_str=trim($key_str,',');
$v_str=trim($v_str,',');
//判断数据是否为空
$sql="insert into $table ($key_str) values ($v_str)";
$this->query($sql);
//返回上一次增加操做产生ID值
return mysql_insert_id();
}
/*
* 删除一条数据方法
* @param1 $table, $where=array('id'=>'1') 表名 条件
* @return 受影响的行数
*/
public function deleteOne($table, $where){
if(is_array($where)){
foreach ($where as $key => $val) {
$condition = $key.'='.$val;
}
} else {
$condition = $where;
}
$sql = "delete from $table where $condition";
$this->query($sql);
//返回受影响的行数
return mysql_affected_rows();
}
/*
* 删除多条数据方法
* @param1 $table, $where 表名 条件
* @return 受影响的行数
*/
public function deleteAll($table, $where){
if(is_array($where)){
foreach ($where as $key => $val) {
if(is_array($val)){
$condition = $key.' in ('.implode(',', $val) .')';
} else {
$condition = $key. '=' .$val;
}
}
} else {
$condition = $where;
}
$sql = "delete from $table where $condition";
$this->query($sql);
//返回受影响的行数
return mysql_affected_rows();
}
/**
* [修改操作description]
* @param [type] $table [表名]
* @param [type] $data [数据]
* @param [type] $where [条件]
* @return [type]
*/
public function update($table,$data,$where){
//遍历数组,得到每一个字段和字段的值
$str='';
foreach($data as $key=>$v){
$str.="$key='$v',";
}
$str=rtrim($str,',');
//修改SQL语句
$sql="update $table set $str where $where";
$this->query($sql);
//返回受影响的行数
return mysql_affected_rows();
}
}
?>
测试:
//mysql测试
//$db=db::getIntance();
//var_dump($db);
/*$sql="select * from acticle";
$list=$db->getAll($sql);
$db->p($list);*/
/*$sql="select * from acticle where acticle_id=95";
$list=$db->getRow($sql);
$db->p($list);
*/
/*$sql="select title from acticle";
$list=$db->getOne($sql);
$db->p($list);*/
//$list=$db->insert("users",$_POST);
//$del=$db->deleteOne("users","id=26");
//$del=$db->deleteAll("users","id in(23,24)");
//$up=$db->update("users",$_POST,"id=27");
//$id=$db->getInsertid();
//print_R($id);
希望本文所述对大家PHP程序设计有所帮助。
mysql 单例模式_php基于单例模式封装mysql类完整实例相关推荐
- php mysql 单例模式_PHP基于单例模式实现的mysql类
本文实例讲述了PHP基于单例模式实现的mysql类.分享给大家供大家参考,具体如下:<?php defined('ACC')||exit('Access Denied'); // 封装mysql ...
- java处理日期的类_Java实现的日期处理类完整实例
本文实例讲述了java实现的日期处理类.分享给大家供大家参考,具体如下: 开发中常常要使用日期,先小结如下,以备后用. import java.text.ParseException; import ...
- java 单例基类_PHP基于单例模式实现的数据库操作基类
本文实例讲述了PHP基于单例模式实现的数据库操作基类.分享给大家供大家参考,具体如下: 配置文件: $db = array( 'host'=>'localhost', 'user'=>'r ...
- MySQL各种优化基于《高性能MySQL第三版》
[TOC] MySQL各种优化 查询优化 查询优化器模块 查询优化器的任务是发现执行 SQL 查询的最佳方案.大多数查询优化器,要么基于规则.要么基于成本. 大多数查询优化器,包含 MySQL 的查询 ...
- mysql 主从复制 和基于gtid的mysql主从复制
主从复制 原理: mysql 无需借助第三方工具,而是其自带的同步复制功能,另外一点,mysql 的主从 复制并不是从硬盘给上文件直接同步,而是逻辑的 binlog 日志同步到本地的应用执行的过 程. ...
- mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing
Inception 1. Inceptionj简介 Inception是一款针对MySQL的SQL语句审核自动化运维工具.使用Inception,将会给DBA带来更大的便利性,将DBA从繁冗的工作中解 ...
- Mysql进阶(4)——基于MHA的MySQL高可用架构
前言 MySQL高可用性大杀器之MHA MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...
- php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程
代码如下: public function SimpleDao() { if ($this->_con == null) { $this->_con = @mysql_connect(&q ...
- phppage类封装分页功能_php封装的page分页类完整实例代码
效果图 1.测试实例test.php header("Content-Type: text/html; charset=utf-8"); date_default_timezone ...
- mysql编程_PHP数据库编程之一MySQL优化策略概述
本文简单讲述了PHP数据库编程之MySQL优化策略.分享给大家供大家参考,具体如下: 前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查 ...
最新文章
- 负载均衡中使用 Redis 实现共享 Session
- date new 转换时区_Pandas 时间序列 时区控制
- 团队软件开发第一次冲刺(二)
- 复旦 哈工大计算机学院,国内高校中哈工大和上交复旦在一个档次吗?从这些方面看你就知道...
- c++使用Vigenere加解密文本的算法(附完整源码)
- 微软Azure storage account的connection string
- 开发转运维有什么好点的理由_芜湖好点的团购社区费用
- javascript:访问iframe中的js函数
- 敏捷软件开发VS传统软件开发
- sphinx安装及简单使用
- 视频基础知识 720P、1080i、1080P
- h5大前端常用网站以及npm模块整理
- android摄影程序,手机影像魅力:10款最佳Android摄影程序
- 三星android5 root包,三星 S5360的安卓 2.3.5系统 root成功
- 游戏服务器 协议 安全问题,游戏服务器开发安全问题
- linux freemind字体,解决freemind中文乱码
- 归并算法经典应用——求解逆序数
- 关于K8S外部域名解析和hostNetwork内部域名解析问题笔记
- 基石为勤能补拙的迷宫之旅——第八天(Python文件操作)
- 基于遗传算法的阵列天线方向图综合的Python实现
热门文章
- ServiceNow常用角色和分组
- MapXtreme2004的Web选择控件(三)
- FileExplorer手机访问电脑文件
- 如何去除list中的重复元素
- 【shell 脚本】删除/var/log 下的日志
- 只有 IE 才有的 Bug or feature?
- oracle alter database,alter database ... create datafile的原理及用途
- java集群之间共享数据_多个JVM之间,数据共享的问题?
- Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)
- x264源码下载信息