文档章节

php库模板

猿计划
 猿计划
发布于 2016/09/12 11:33
字数 1306
阅读 10
收藏 0
<?php

/**
 * 
 * 公用函数库
 * 
 * @功能:
 * 
 * 常用的公用函数
 * 
 * @version		0.0.1
 * @author 		HH
 * @link   		#
 * @QICQ	 	#
 * 
 */

/**
 * 测试输出语句
 *
 * @access  public
 * @param   mixed   $val
 * @param   bool    $mark
 * @return  void
 */
function pf($val,$mark = false){
	print("<pre>");
	$mark === false && print_r($val) || var_dump($val);
}

/**
 * 验证输入的邮件地址是否合法
 *
 * @access  public
 * @param   string      $email      需要验证的邮件地址
 *
 * @return bool
 */
function is_email($user_email)
{
    $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";
    if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false)
    {
        if (preg_match($chars, $user_email))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

/**
 * 返回IP地址
 *
 * @access  public
 * @param   bool    $int
 * @return  void
 */
function getIp($int = false){
	return $int === false ? $_SERVER['SERVER_ADDR'] : ip2long($_SERVER['SERVER_ADDR']);
}

/**
 * 返回时间
 *
 * @access  public
 * @param   bool    $str
 * @return  void
 */
function getTime($str = false){
	return $str === false ? $_SERVER['REQUEST_TIME'] : date('Y-m-d H:i:s',$_SERVER['REQUEST_TIME']);
}

?>
<?php
/**
 * 
 * 数据库配置文件
 * 
 * @功能:
 * 
 * 数据库详细参数设置
 * 
 * @version		0.0.1
 * @author 		HH
 * @link   		#
 * @QICQ	 	#
 * 
 */
 
$config	=	array(
				'dbname'		=>	'test',//待连接的数据库名字
				'server'		=>	'localhost',//待连接的数据库地址
				'user'			=>	'root',//待连接的数据库用户名
				'password'		=>	'123456',//待连接的数据库密码
				'reporterror'	=>	'0',//是否输出错误
				'dbport'		=>	'3306' //待连接的数据库端口
);
?>
<?php

/**
 * 
 * 数据库操作类
 * 
 * @功能:
 * 
 * 操作数据库方法
 * 
 * @version		0.0.1
 * @author 		HH
 * @link   		#
 * @QICQ	 	#
 * 
 */
 
class DB{
	private $database = '';

	private $link_id = 0;
	private $query_id = null;
	private $record = array();

	private $errdesc = '';
	public $errno = 0;
	private $reporterror = 1;

	private $server = 'localhost';
	private $user = 'root';
	private $password = '';
	private $counts = 0;
	private $dbport=3306;
	private $dbname="BY";	
	
	/**
	 * 测试输出语句
	 *
	 * @access  public
	 * @param   mixed   $val
	 * @param   bool    $mark
	 * @return  void
	 */
	public function __construct($config = array())
	{
	    if (!is_array($config))
	    {
	        throw new Exception('配置参数必须为数组');
	    }
	    if (isset($config['dbname']) && $config['dbname'] != '')
	    {
	        $this->database = $config['dbname'];
	    }
	    if (isset($config['server']) && $config['server'] != '')
	    {
	        $this->server = $config['server'];
	    }
	    if (isset($config['user']) && $config['user'] != '')
	    {
	        $this->user = $config['user'];
	    }
	    if (isset($config['password']) && $config['password'] != '')
	    {
	        $this->password = $config['password'];
	    }
	    if (isset($config['reporterror']) && $config['reporterror'] != '')
	    {
	        $this->reporterror = $config['reporterror'];
	    }
	    if (isset($config['dbport']) && $config['dbport'] != '')
	    {
	        $this->dbport = $config['dbport'];
	    }
	}
	
	/**
	 * 数据库连接
	 *
	 * @access  public
	 * @return  void
	 */
	public function connect() 
	{	
		// connect to db server
		if ( 0 == $this->link_id ) 
		{
			$this->link_id=@mysqli_connect($this->server,$this->user,$this->password,$this->database,$this->dbport);

			if (!$this->link_id) { $this->halt("MysqlI数据库连接失败."); }
			$this->query("SET NAMES 'utf8'");
			if ($this->database!="") 
			{
				if(!mysqli_select_db($this->link_id,$this->database)) 
				{
					$this->halt("cannot use database ".$this->database);
				}
			}
			unset($this->password);
		}
	}
	
	/**
	 * 获取数据库错误信息
	 *
	 * @access  public
	 * @return  string	错误信息
	 */
	public function geterrdesc() 
	{
		$this->error=@mysqli_error($this->link_id);
		return $this->error;
	}
	
	/**
	 * 获取数据库错误编号
	 *
	 * @access  public
	 * @return  int		错误编号
	 */
	public function geterrno() 
	{
		$this->errno=@mysqli_errno($this->link_id);
		if(in_array($this->errno,array(2006, 2013))){
			connect();
		}else{
			return $this->errno;
		}
	}
	
	/**
	 * 选择待操作的数据库
	 *
	 * @access  public
	 * @return  void
	 */
	public function select_db($database="") 
	{
		if ($database!="") { $this->database=$database; }

		if(!mysqli_select_db($this->link_id,$this->database)) {
			$this->halt("无法使用数据库 ".$this->database);
		}
	}
	
	/**
	 * 执行数据库操作
	 *
	 * @access  public
	 * @param   string    	SQL语句
	 * @return  mixed		执行结果集
	 */
	public function query($query_string) 
	{
		$array=$this->query_id = mysqli_query($this->link_id,$query_string);
		if (!$this->query_id) { $this->halt("无效 SQL: ".$query_string); }
		$this->record[] = $query_string;
		$this->counts++;
		return $this->query_id;
	}
	
	/**
	 * 获取查询结果集
	 *
	 * @access  public
	 * @param   mixed   操作结果集
	 * @return  array	查询结果集二维数组
	 */
	public function fetch_array($query_id=-1) 
	{	
		if (!empty($query_id)) { $this->query_id=$query_id; }
		$this->record = mysqli_fetch_array($this->query_id,MYSQLI_ASSOC);

		return $this->record;
	}
	
	/**
	 * 生成二维数组
	 *
	 * @access  public
	 * @return  array	查询结果集二维数组
	 */
	public function to_array()
	{
	    $rs = array();
	    while (($rtn = mysqli_fetch_array($this->query_id, MYSQLI_ASSOC)) !== false)
	    {
	        $rs[] = $rtn;
	    }
	    return $rs;
	}
	
	/**
	 * 释放操作资源
	 *
	 * @access  public
	 * @param   mixed   操作结果集
	 * @return  bool	释放是否成功
	 */
	public function free_result($query_id=-1) 
	{
		if (!empty($query_id)) { $this->query_id=$query_id; }
		return @mysqli_free_result($this->query_id);
	}
	
	/**
	 * 查询一行记录
	 *
	 * @access  public
	 * @param   string	操作语句    
	 * @return  array	操作结果集
	 */
	public function query_first($query_string) 
	{
		$this->query($query_string);
		$returnarray=$this->fetch_array();

		$this->free_result($this->query_id);
		return $returnarray;
	}
	
	/**
	 * 调整结果集中的下表位置
	 *
	 * @access  public
	 * @param   int   	下标位置 	
	 * @param   mixed	 操作结果集
	 * @return  bool	返回操作是否成功
	 */
	public function data_seek($pos,$query_id=-1) {
		// goes to row $pos
		if ($query_id!=-1) { $this->query_id=$query_id; }
		$status = mysqli_data_seek($this->query_id, $pos);
		return $status;
	}
	
	/**
	 * 操作结果集影响行数
	 *
	 * @access  public
	 * @param   mixed   操作结果集
	 * @return  int		操作影响行数
	 */
	public function num_rows($query_id=-1) {
		// returns number of rows in query
		if ($query_id!=-1) { $this->query_id=$query_id; }
		return  mysqli_num_rows($this->query_id);
	}
	
	/**
	 * 获取影响行数
	 *
	 * @access  public
	 * @return  int		影响行数
	 */	
	public function affect_rows()
	{
		return  mysqli_affected_rows($this->link_id);
	}
	
	/**
	 * 执行插入操作后,获取最新插入ID
	 *
	 * @access  public
	 * @return  int	最新插入ID
	 */
	public function insert_id() {
		// returns last auto_increment field number assigned
		return mysqli_insert_id($this->link_id);
	}
	
	/**
	 * 终止数据库操作
	 *
	 * @access  public
	 * @param   string	错误语句
	 * @return  void
	 */	
	public function halt($msg) {
		if(in_array(mysqli_errno($this->link_id),array(2006, 2013))){
			$this->connect();
		}else{
		$this->errno=@mysqli_errno($this->link_id);
		$this->errdesc=@mysqli_error($this->link_id);
		
		//require_once('salebombmailer/mail.inc.php');
		//global $technicalemail;
		$message="数据库错误 : $msg\r\n<br />";
		$message.="MySQLI错误: $this->errdesc\r\n<br />";
		$message.="MySQLI错误号: $this->errno\r\n<br />";
		$message.="日期: ".date("l dS of F Y h:i:s A")."\r\n<br />";
		$message.="脚本: ".getenv("REQUEST_URI")."\r\n<br />";
		$message.="附注: ".getenv("HTTP_REFERER")."\r\n<br />";
		//$mail->Subject = "数据库错误"; //必填,邮件标题(主题)

		//$mail->MsgHTML($message); //邮件正文内容,提取html文件为其内容
		//$mail->AddAddress($technicalemail, "系统数据库错误信息"); //收件人地址。参数一:收信人的邮箱地址,可添加多个。参数二:收件人称呼
		//$mail->Send();
		
		@mail ("812045247@qq.com","数据库错误!",$message,"From: \"\" <xiao_mao2008@yahoo.com.cn>");
		if ($this->reporterror)
		{
		  // // throw new DBException($message);
		  echo "系统繁忙";
		  exit;
		}
		}

	}
	
	/**
	 * 开始事物
	 *
	 * @access  public
	 * @return  void
	 */	
	public function beginTransaction()
	{
	    $this->query('begin');
	}
	
	/**
	 * 提交事物
	 *
	 * @access  public
	 * @return  void
	 */	
	public function commit()
	{
	    $this->query('commit');
	}
	
	/**
	 * 撤销事物/事物回滚
	 *
	 * @access  public
	 * @return  void
	 */	
	public function rollback()
	{
	    $this->query('rollback');
	}
}
<?php
/**
 * 
 * 公用头文件
 * 
 * @功能:
 * 
 * 公共引入的头文件,集合常用的变量函数
 * 
 * @version		0.0.1
 * @author 		HH
 * @link   		#
 * @QICQ	 	#
 * 
 */

require './common.php';//引入公共方法操作文件

require './db.ini.php';//引入数据库配置文件

require './db_mysql.php';//引入数据库操作文件

$ip			=	getIp(true);
$time		=	getTime(true);


$dbObj	=	new DB($config);

$dbObj->connect();

?>
<?php

require './initial.php';



$resource 	= 	$dbObj->query("SELECT * FROM `user`");

$rs			=	array();


while($ret = $dbObj->fetch_array($resource)){
	$rs[] = $ret;
}

pf($time);

?>

 

© 著作权归作者所有

上一篇: 配置Apache环境
下一篇: php关键字记录
猿计划
粉丝 0
博文 16
码字总数 3823
作品 0
渝中
程序员
私信 提问
php的目录结构

phpcms v9框架的目录结构分析 phpcmsv9框架的目录结构分析: 了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识 打开"mycms"项目,有如下文件和目录 使用协议说明文档、...

名字已被取
2016/03/30
54
0
ThinkPHP/think-template

think-template 从ThinkPHP5.1独立出来的编译型模板引擎 主要特性 支持XML标签库和普通标签的混合定义; 支持直接使用PHP代码书写; 支持文件包含; 支持多级标签嵌套; 支持布局模板功能; ...

ThinkPHP
2017/11/02
0
0
thinkphp自定义模板标签(一)

thinkphp内置的foreach和include等模板标签使用是非常方便的;但是内置的那些标签只能满足常用功能,个性化的功能就需要我们自己编写自定义模板标签了;下面就是要讲解如何实现; 示例环境:...

白俊遥
2016/03/06
24
0
zabbix 使用percona监控mysql数据库

Zabbix模板自带一个MySQL监控模板,但监控的项目比较少,生产环境推荐使用percona的监控插件。 1.安装percona插件(agent端): 2.percona是php写的,所以agent连接MySQL必须安装php和php-m...

科技小能手
2017/11/12
0
0
XHP 库--xhp-lib

xhp-lib 是 XHP 的库。XHP 是一个 PHP 扩展,通过它,开发人员可以直接在 PHP 代码中内嵌 XML 文档片段,作为合法的 PHP 表达式。这样,PHP就成为一个更为严格的模板引擎,大大简化了实现可重...

孔小菜
2015/04/10
414
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 8 中新增 lambda 表达式的一些基本应用

import java.util.Arrays;import java.util.List;import java.util.function.Function;import java.util.stream.Collectors;public class TestLambda { public static void......

这是一只小小鸟
32分钟前
3
0
Java向word中插入Excel文件对象

前言: 在word文件中,虽然也有表格。但是有时我们想要将Excel中表格的大量数据直接插入到word文档中,这就需要用到word的插入对象的功能,也就是直接将Excel文件当做对象插入到word中。 本地的...

qianxi
34分钟前
2
0
海量数据下的注册中心 - SOFARegistry 架构介绍

SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFARegi...

SOFAStack
37分钟前
12
0
python操作excel表格

python 对excel的操作 提示:如果需要写多个表,需要把多个表写完在保存,否则会出现表格覆盖问题 此程序 采取一边请求,一边存取,做个异常处理,即可保存已存在的数据 """# sheet的名称,...

鹏灬
40分钟前
1
0
好程序员web前端分享如何理解JS的单线程

好程序员web前端分享如何理解JS单线程,JS本质是单线程的。也就是说,它并不能像JAVA语言那样,两个线程并发执行。 但我们平时看到的JS,分明是可以同时运作很多任务的,这又是怎么回事呢? ...

好程序员IT
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部