本文目录一览:
谁给个php操作mysql类并有详细使用说明或例子
下面这个,是针对php5的一个简单数据库封装类,适合学习,其他的如删除、更新等操作,你可以自己加上:
?php
class Mysql{ //首先定义一个类,首写字母大写
public $host;//服务器名,访问修饰符PUBLIC证明$host是一个公共的属情在类的内部外部都可访问,可以被继承
public $user;//用户名,是公共的属性
private $pass;//密码,问修饰符private证明$pass是私有的.只能在类的内部使用且不能被继承.
public $dbname;//数据库名,也是公共的属性.
//__construct声名这是一个造函数,定义一些初始的信息.有三个参数
public function __construct($host,$user,$pass,$dbname){
$this-host = $host;
$this-user = $user;
$this-pass = $pass;
$this-dbname = $dbname;
$link = @mysql_connect($this-host,$this-user,$this-pass)
or die("error");
@mysql_select_db($this-dbname,$link)
or die("error2");
}
//定义数据库的查寻和显示函数
function myQuery($sql){
$result = mysql_query($sql);
if(!$result){
echo "error3";
exit;
}
$num = mysql_num_rows($result);
if($num){
echo "NO".$num;
}
while($row = mysql_fetch_assoc($result)){
echo 'trtd bgcolor="#fffddd"pre'.htmlspecialchars(stripslashes($row['body']))."pre/td/tr";
}
}
}
$rutt = new Mysql('localhost','root','ssss','calvin');//实例化一个类...记住这里的参数是和构造函数的参数一样的...
$rutt-myQuery('select * from calvin_body');//运行数据库查寻并显示的函数..
?
下面这个是针对php5以下版本的数据库封装类,体现了php类的继承,一个许愿版程序的:
?php
/*
* FileName: DatabaseSQL.inc.php
* Author: Terry
* Function: 建立DatabaseSQL对象,实现对数据库的基本操作
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop /
*/
// 定义DatabaseSQL对象
Class DatabaseSQL
{
var $CONN = ""; // 连接号
var $HOST = "Localhost"; // 主机名
var $USER = ""; // 用户名
var $PASSWORD = ""; // 密码
// DatabaseSQL类的构造函数
function DatabaseSQL($DBNAME)
{
$user = $this - USER;
$password = $this - PASSWORD;
$host = $this - HOST;
$db = $DBNAME;
// 连接数据库
$conn = mysql_connect($host, $user, $password);
mysql_select_db($db, $conn);
$this - CONN = $conn;
return true;
}
// 定义查询操作
function select($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this - CONN) ) return false;
$conn = $this - CONN;
// 发送SQL语句,获得结果
$result = mysql_query($strSQL, $conn);
if ( (!$result) or (empty($result)) ) {
return false;
}
$num = 0;
$data = array();
// 将查询结果放二维数组中
while ( $row = mysql_fetch_array($result) ) {
$data[$num] = $row;
$num++;
}
mysql_free_result($result);
return $data;
}
// 定义插入操作
function insert($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this - CONN) ) return false;
$conn = $this - CONN;
// 发送SQL语句,插入新数据
$result = mysql_query($strSQL, $conn);
if ( !result ) return false;
// 获得记录的id号
$result = mysql_insert_id();
return $result;
}
// 定义更新操作
function update($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this - CONN) ) return false;
$conn = $this - CONN;
// 发送SQL语句,更新数据库
$result = mysql_query($strSQL, $conn);
return $result;
}
// 定义删除操作
function delete($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this - CONN) ) return false;
$conn = $this - CONN;
// 发送SQL语句,删除记录
$result = mysql_query($strSQL, $conn);
return $result;
}
}
?
----------------------------------
?php
/*
* FileName: Wish.inc.php
* Author: Terry
* Function: 建立Wish对象,实现对许愿板进行操作功能
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop /
*/
require "config.inc.php";
require "DatabaseSQL.inc.php";
// 定义Wish对象
Class Wish extends DatabaseSQL
{
// 构造函数
function Wish()
{
$DBName = $GLOBALS["dbname"];
$this - DatabaseSQL($DBName);
}
// 添加新愿望(use in wish/save.php?action=add_wish)
function AddWish($name,$receiver,$type,$address,$content,$hide,$addtime)
{
$strSQL = "insert into Wish (Name, Receiver, Type, Address, Content, Hide, AddTime) values ('$name', '$receiver', '$type', '$address', '$content', '$hide', '$addtime')";
$result = $this - insert($strSQL);
return $result;
}
// 修改指定id的愿望内容(use in save.php?action=edit_wish)
function EditWish($wid,$name,$receiver,$type,$address,$content,$hide)
{
$strSQL = "update `Wish` set `Name` = '$name', `Receiver` = '$receiver', `Type` = '$type', `Address` = '$address', `Content` = '$content', `Hide` = '$hide' where `WID` = '$wid' ";
$result = $this - update($strSQL);
return $result;
}
// 愿望列表(use in index.php)
function ListWish($startid,$list_nums)
{
$strSQL = "select * from Wish order by AddTime desc LIMIT $startid,$list_nums";
$result = $this - select($strSQL);
return $result;
}
// 获取指定愿望信息(use in index.php?go=view_wish)
function GetWish($wid)
{
$strSQL = "select * from Wish where WID = '$wid'";
$result = $this - select($strSQL);
return $result;
}
// 更新指定愿望的浏览数(use in index.php?go=view_wish)
function UpdateHit($wid)
{
$strSQL = "update `Wish` set `Hit` = ( `Hit` + 1 ) where `WID` = '$wid'";
$result = $this - update($strSQL);
return $result;
}
// 删除指定愿望信息(use in save.php?action=del_wish)
function DelWish($wid)
{
$strSQL = "delete from Wish where WID = '$wid'";
$result = $this - delete($strSQL);
return $result;
}
}
?
---------------------------------------
?php
/*
* FileName: config.inc.php
* Author: Terry
* Function: 系统基本设置
* Version : B.S - Wish v1.0
* CreateDate: 2004-03-19
* Copyright: Blue-Workshop
* Tec-Support: /
* Attention: 请保留版权信息,谢谢 ^_^
*/
// 数据库信息
$dbhost = "Localhost"; /* 主机名 */
$dbuser = ""; /* 数据库用户 */
$dbpwd = ""; /* 数据库密码 */
$dbname = "BS_Wish"; /* 数据库名 */
// 管理员信息
$adminname = "blue"; /* 初始化管理员 */
$adminpwd = "blue"; /* 初始化管理密码 */
?
PHP访问MYSQL数据库封装类(附函数说明)
复制代码
代码如下:
?php
/*
MYSQL
数据库访问封装类
MYSQL
数据访问方式,php4支持以mysql_开头的过程访问方式,php5开始支持以mysqli_开头的过程和mysqli面向对象
访问方式,本封装类以mysql_封装
数据访问的一般流程:
1,连接数据库
mysql_connect
or
mysql_pconnect
2,选择数据库
mysql_select_db
3,执行SQL查询
mysql_query
4,处理返回的数据
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
;
//当前页面进程查询数据库的次数
var
$dblink
;
//数据库连接资源
//链接数据库
function
connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0
,
$halt=true)
{
$func
=
empty($pconnect)
?
'mysql_connect'
:
'mysql_pconnect'
;
$this-dblink
=
@$func($dbhost,$dbuser,$dbpw)
;
if
($halt
!$this-dblink)
{
$this-halt("无法链接数据库!");
}
//设置查询字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this-dblink)
;
//选择数据库
$dbname
@mysql_select_db($dbname,$this-dblink)
;
}
//选择数据库
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this-dblink);
}
//执行SQL查询
function
query($sql)
{
$this-querynum++
;
return
mysql_query($sql,$this-dblink)
;
}
//返回最近一次与连接句柄关联的INSERT,UPDATE
或DELETE
查询所影响的记录行数
function
affected_rows()
{
return
mysql_affected_rows($this-dblink)
;
}
//取得结果集中行的数目,只对select查询的结果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//获得单格的查询结果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作产生的
ID,只对表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this-dblink))
=
?
$id
:
$this-result($this-query("SELECT
last_insert_id()"),
0);
}
//从结果集提取当前行,以数字为key表示的关联数组形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//从结果集提取当前行,以字段名为key表示的关联数组形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//关闭链接
function
close()
{
return
mysql_close($this-dblink)
;
}
//输出简单的错误html提示信息并终止程序
function
halt($msg)
{
$message
=
"html\nhead\n"
;
$message
.=
"meta
content='text/html;charset=gb2312'\n"
;
$message
.=
"/head\n"
;
$message
.=
"body\n"
;
$message
.=
"数据库出错:".htmlspecialchars($msg)."\n"
;
$message
.=
"/body\n"
;
$message
.=
"/html"
;
echo
$message
;
exit
;
}
}
?
PHP网站怎么连接到数据库?
常规方式
常规方式就是按部就班的读取文件了。其余的话和上述方案一致。
// 读取配置文件内容
$handle = fopen("filepath", "r"); $content = fread($handle, filesize("filepath"));123
PHP解析XML
上述两种读取文件,其实都是为了PHP解析XML来做准备的。关于PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是对于比较小型的xml配置文件,simplexml就足够了。
配置文件
?xml version="1.0" encoding="UTF-8" ?mysql
!-- 为防止出现意外,请按照此标准顺序书写.其实也无所谓了 --
hostlocalhost/host
userroot/user
password123456/password
dbtest/db
port3306/port/mysql12345678910
解析
?php/**
* 作为解析XML配置文件必备工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml"; public static function getDBConfiguration() {
$dbconfig = array (); try { // 读取配置文件内容
$handle = fopen(self::$dbconfigpath, "r"); $content = fread($handle, filesize(self::$dbconfigpath)); // 获取xml文档根节点,进而获取相关的数据库信息
$mysql = simplexml_load_string($content); // 将获取到的xml节点信息赋值给关联数组,方便接下来的方法调用
$dbconfig['host'] = $mysql-host; $dbconfig['user'] = $mysql-user; $dbconfig['password'] = $mysql-password; $dbconfig['db'] = $mysql-db; $dbconfig['port'] = $mysql-port; // 将配置信息以关联数组的形式返回
return $dbconfig;
} catch ( Exception $e ) { throw new RuntimeException ( "mark读取数据库配置文件信息出错!/markbr /" );
} return $dbconfig;
}
}1234567891011121314151617181920212223242526272829
数据库连接池
对于PHP程序而言,优化永无止境。而数据库连接池就在一定程度上起到了优化的作用。其使得对用户的每一个请求而言,无需每次都像数据库申请链接资源。而是通过已存在的数据库连接池中的链接来返回,从时间上,效率上,都是一个大大的提升。
于是,这里简单的模拟了一下数据库连接池的实现。核心在于维护一个“池”。
从池子中取,用毕,归还给池子。
?php/**x
* PHP中的数据库 工具类设计
* 郭璞
* 2016年12月23日
*
**/class DbHelper { private $dbconfig; private $dbpool; public $poolsize; public function __construct($poolsize = 20) { if (! file_exists ( "./utils.php" )) { throw new RuntimeException ( "markutils.php文件丢失,无法进行配置文件的初始化操作!/markbr /" );
}else {
require './utils.php';
} // 初始化 配置文件信息
$this-dbconfig = XMLUtil::getDBConfiguration (); // 准备好数据库连接池“伪队列”
$this-poolsize = $poolsize;
$this-dbpool = array (); for($index = 1; $index = $this-poolsize; $index ++) {
$conn = mysqli_connect ( $this-dbconfig ['host'], $this-dbconfig ['user'], $this-dbconfig ['password'], $this-dbconfig ['db'] ) or die ( "mark连接数据库失败!/markbr /" );
array_push ( $this-dbpool, $conn );
}
} /**
* 从数据库连接池中获取一个数据库链接资源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { if (count ( $this-dbpool ) = 0) { throw new ErrorException ( "mark数据库连接池中已无链接资源,请稍后重试!/mark" );
} else { return array_pop ( $this-dbpool );
}
} /**
* 将用完的数据库链接资源放回到数据库连接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { if (count ( $this-dbpool ) = $this-poolsize) { throw new ErrorException ( "mark数据库连接池已满/markbr /" );
} else {
array_push ( $this-dbpool, $conn );
}
}
}