欢迎来到福编程网,本站提供各种互联网专业知识!

支持php4、php5的mysql数据库操作类

发布时间:2008-01-10 作者: 来源:转载
前端一直使用PHP5,的确使用起来特别的爽,现在为了能在俺的虚拟主机上跑,不得不改成PHP4的。这几个库类我以前发在PHPCHIAN,地址是http://www.phpchina.com/bbs/viewthread.php?tid=5687&highlight=。(前几天在网上搜索了下,发现很多转载我的这几篇文章都
前端一直使用PHP5,的确使用起来特别的爽,现在为了能在俺的虚拟主机上跑,不得不改成PHP4的。这几个库类我以前发在PHPCHIAN,地址是http://www.phpchina.com/bbs/viewthread.php?tid=5687&highlight=。(前几天在网上搜索了下,发现很多转载我的这几篇文章都没有说明出处,而且把我的版权都删除了,气晕了。)

昨天改写了数据库操作类,恰好在我简化zendFramework也能用到。

代码如下:


/**
*filename:DB_Mysql.class.php
*@package:phpbean
*@author:feifengxlq<[email]feifengxlq@gmail.com[/email]>
*@copyright:Copyright2006feifengxlq
*@license:version1.2
*create:2006-5-30
*modify:2006-10-19byfeifengxlq
*description:theinterfaceofmysql.
*
*example:
*////////////Selectaction(Firstmode)//////////////////////////////
$mysql=newDB_Mysql("localhost","root","root","root");
$rs=$mysql->query("select*fromtest");
for($i=0;$i<$mysql->num_rows($rs);$i++)
$record[$i]=$mysql->seek($i);
print_r($record);
$mysql->close();
*////////////Selectaction(Secondmode)//////////////////////////////
$mysql=newDB_Mysql("localhost","root","root","root");
$rs=$mysql->execute("select*fromtest");
print_r($rs);
$mysql->close();
*/////////////insertaction////////////////////////////
$mysql=newDB_Mysql("localhost","root","root","root");
$mysql->query("insertintotest(username)values('testfrommyDB_mysql')");
printf("%s",$mysql->insert_id());
$mysql->close();
*/
classmysql{

/*private:connectionparameters*/
var$host="localhost";
var$database="";
var$user="root";
var$password="";

/*private:configurationparameters*/
var$pconnect=false;
var$debug=false;

/*private:resultarrayandcurrentrownumber*/
var$link_id=0;
var$query_id=0;
var$record=array();

/**
*construct
*
*@paramstring$host
*@paramstring$user
*@paramstring$password
*@paramstring$database
*/
function__construct($host="localhost",$user="root",$password="",$database="")
{
$this->set("host",$host);
$this->set("user",$user);
$this->set("password",$password);
$this->set("database",$database);
$this->connect();
}

/**
*setthevaluefortheparamofthisclass
*
*@paramstring$var
*@paramstring$value
*/
functionset($var,$value)
{
$this->$var=$value;
}


/**
*connecttoamysqlserver,andchoosethedatabase.
*
*@paramstring$database
*@paramstring$host
*@paramstring$user
*@paramstring$password
*@returnlink_id
*/
functionconnect($database="",$host="",$user="",$password="")
{
if(!empty($database))$this->set("database",$database);
if(!empty($host))$this->set("host",$host);
if(!empty($user))$this->set("user",$user);
if(!empty($password))$this->set("password",$password);
if($this->link_id==0)
{
if($this->pconnect)
$this->link_id=@mysql_pconnect($this->host,$this->user,$this->password);
else
$this->link_id=@mysql_connect($this->host,$this->user,$this->password);
if(!$this->link_id)
die("MysqlConnectErrorin".__FUNCTION__."():".mysql_errno().":".mysql_error());
if(!@mysql_select_db($this->database,$this->link_id))
die("MysqlSelectdatabaseErrorin".__FUNCTION__."():".mysql_errno().":".mysql_error());
}
return$this->link_id;
}

/**
*queryasqlintothedatabase
*
*@paramstring$strsql
*@returnquery_id
*/
functionquery($strsql="")
{
if(empty($strsql))die("MysqlError:".__FUNCTION__."()strsqlisempty!");
if($this->link_id==0)$this->connect();
if($this->debug)printf("Debugquerysql:%s",$strsql);
$this->query_id=@mysql_query($strsql,$this->link_id);
if(!$this->query_id)die("Mysqlqueryfail,Invalidsql:".$strsql.".");
return$this->query_id;
}

/**
*queryasqlintothedatabase,whileitisdiffererntfromthequery()method,
*thismethodwillreturnarecord(array);
*
*@paramstring$strsql
*@paramstring$style
*@return$recordisaarray()
*/
functionExecute($strsql,$style="array")
{
$this->query($strsql);
if(!empty($this->record))$this->record=array();
$i=0;
if($style=="array"){
while($temp=@mysql_fetch_array($this->query_id)){
$this->record[$i]=$temp;
$i++;
}
}else{
while($temp=@mysql_fetch_object($this->query_id)){
$this->record[$i]=$temp;
$i++;
}
}
unset($i);
unset($temp);
return$this->record;
}

/**
*seek,butnotequaltomysql_data_seek.thismethordwillreturnalist.
*
*@paramint$pos
*@paramstring$style
*@returnrecord
*/
functionseek($pos=0,$style="array")
{
if(!@mysql_data_seek($this->query_id,$pos))
die("Errorin".__FUNCTION__."():cannotseektorow".$pos."!");
$result=@($style=="array")?mysql_fetch_array($this->query_id):mysql_fetch_object($this->query_id);
if(!$result)die("Errorin".__FUNCTION__."():cannotfetchdata!");
return$result;
}
/**
*freetheresultofquery
*
*/
functionfree()
{
if(($this->query_id)&($this->query_id!=0))@mysql_free_result($this->query_id);
}

/**
*evaluatetheresult(size,width)
*
*@returnnum
*/
functionaffected_rows()
{
return@mysql_affected_rows($this->link_id);
}

functionnum_rows()
{
return@mysql_num_rows($this->query_id);
}

functionnum_fields()
{
return@mysql_num_fields($this->query_id);
}

functioninsert_id()
{
return@mysql_insert_id($this->link_id);
}

functionclose()
{
$this->free();
if($this->link_id!=0)@mysql_close($this->link_id);
if(mysql_errno()!=0)die("MysqlError:".mysql_errno().":".mysql_error());
}

functionselect($strsql,$number,$offset)
{
if(empty($number)){
return$this->Execute($strsql);
}else{
return$this->Execute($strsql.'limit'.$offset.','.$number);
}
}

function__destruct()
{
$this->close();
$this->set("user","");
$this->set("host","");
$this->set("password","");
$this->set("database","");
}
}
?>

在此基础上,我顺便封装SIDU(select,insert,update,delete)四种基本操作,作为简化的zendFramework的module。代码如下(这个没写注释了,懒的写。。):


classmodule{

var$mysql;

var$tbname;

var$debug=false;

function__construct($tbname){
if(!is_string($tbname))die('Moduleneedaargsoftablename');
$this->tbname=$tbname;
$this->mysql=phpbean::registry('db');
}

function_setDebug($debug=true){
$this->debug=$debug;
}

functionadd($row){
if(!is_array($row))die('moduleerror:rowshouldbeanarray');
$strsql='insertinto`'.$this->tbname.'`';
$keys='';
$values='';
foreach($rowas$key=>$value){
$keys.='`'.$key.'`,';
$values.='''.$value.''';
}
$keys=rtrim($keys,',');
$values=rtrim($values,',');
$strsql.='('.$keys.')values('.$values.')';
if($this->debug)echo'


'.$strsql.'
';
$this->mysql->query($strsql);
return$this->mysql->insert_id();
}

functionquery($strsql){
return$this->mysql->Execute($strsql);
}

functioncount($where=''){
$strsql='selectcount(*)asnumfrom`'.$this->tbname.'`';
if(!empty($where))$strsql.=$where;
$rs=$this->mysql->Execute($strsql);
return$rs[0]['num'];
}

functionselect($where=''){
$strsql='select*from`'.$this->tbname.'`';
if(!empty($where))$strsql.=$where;
return$this->mysql->Execute($strsql);
}

functiondelete($where=''){
if(empty($where))die('Error:thedeletemethodneedacondition!');
return$this->mysql->query('deletefrom`'.$this->tbname.'`'.$where);
}

functionupdate($set,$where){
if(empty($where))die('Error:theupdatemethodneedacondition!');
if(!is_array($set))die('Error:Setmustbeanarray!');
$strsql='update`'.$this->tbname.'`';
//getastringofset
$strsql.='set';
foreach($setas$key=>$value){
$strsql.='`'.$key.'`=''.$value.'',';
}
$strsql=rtrim($strsql,',');
return$this->mysql->query($strsql.''.$where);
}

functiondetail($where){
if(empty($where))die('Error:whereshouldnotempty!');
$rs=$this->mysql->query('select*from`'.$this->tbname.'`'.$where);
return$this->mysql->seek(0);
}
}
?>

相关推荐