MySQL数据库操作类
开始弄PHP,发现和ASP超像,OO还处于初级阶段,发现PHP自带的类库太强了,只要熟悉了类库,基本不用自己写什么了,先搞掂一个数据库操作类。
1
<?php2
//------------------------------------------------------------------------------------------ 3
// ※MysqlDB() 构造函数,数据库初始参数 4
// ※MysqlDB2() 构造函数,数据库初始参数 (多态方法)5
// ※Select() 查询6
// ※GetRows() 返回查询的记录总数7
// ※Insert() 插入记录8
// ※Update() 更新9
// ※Delete() 删除10
// ※Halt() 中断并显示错误信息*/11
//------------------------------------------------------------------------------------------ 12
13
define("SERVER","localhost"); //Host name or IP address of the database server14
define("DATABASE","gd"); //要连接的数据库名15
define("USER","root"); //用于连接数据库的用户名16
define("PASSWORD","hicc"); //用于连接数据库的密码 17

18
19
/** 20
* 这是个PHP对MySQL数据库操作类21
* @author <br>22
* @version 1.0* 23
* */24
25
class MysqlDB26
{27
var $dbLink; //连接句柄 28
var $result; //查询句柄 29
var $insId; //Insert()成功返回AUTO_INCREMENT列的值30
var $rows; //返回数据数组31
var $numRows; //返回数据数目32
var $dbHost, $dbUser, $userPassword, $database;33
var $msgFlag = "yes" ; //yes:show the Mysql message ; no: die by show "Halted."34
function MysqlDB()35
{36
$this->dbLink=@mysql_pconnect(SERVER,USER,PASSWORD);// or die("Can't Connect to Remote Host!");37
@mysql_select_db(DATABASE,$this->dbLink);// or die ("Can't Connect to Remote Host!");38
return true;39
}40
function MysqlDB2($dbHost=SERVER,$dbUser=USER,$userPassword=PASSWORD,$database=DATABASE)41
{42

43
$this->dbLink=@mysql_pconnect($dbHost,$dbUser,$userPassword);// or die("Can't Connect to Remote Host!");44
@mysql_select_db($database,$this->dbLink);// or die ("Can't Connect to Remote Host!");45
return true;46
}47
/*SQL:Select() 返回为false无结果*/48
function Select($table,$columns,$condition=1)49
{50
$sql="select $columns from $table where $condition "; 51
echo $sql."<br>"; 52
$this->result=@mysql_query($sql,$this->dbLink); 53
unset($this->rows);54
if($this->result)55
{56
$i=0;57
if(!($this->rows=array("$i"=>@mysql_fetch_array($this->result))))58
return false;59
if(($this->numRows=@mysql_num_rows($this->result))==0)60
return false;61
while($tempRows=@mysql_fetch_array($this->result))62
{ 63
array_push($this->rows,$tempRows); 64
} 65
}66
else67
{68
$this->Halt($sql);69
return false;70
} 71
return true;72
}73
74
/*SQL:GetRows() 返回查询的记录总数*/75
function GetRows($table,$condition=1)76
{77
$sql="select count(1) as count from $table where $condition"; 78
//echo $sql."<br>"; 79
$this->result=@mysql_query($sql,$this->dbLink); 80
if($this->result)81
{82
$temp=@mysql_fetch_array($this->result);83
$this->numRows=$temp[count];84
}85
else86
{87
$this->Halt($sql);88
return false;89
} 90
return $this->numRows;91
}92
93
/*SQL:Insert()*/94
95
function Insert($table,$columns,$values)96
{97
$sql="insert into $table ($columns) values ($values)";98
//echo $sql;99
$this->result=@mysql_query($sql,$this->dbLink);100
if ($this->result)101
$this->insId=@mysql_insert_id($this->dbLink);102
else103
{104
$this->Halt($sql);105
return false;106
}107
return true;108
}109

110
/*SQL:Update()*/111
112
function Update($table,$setings,$condition)113
{114
$sql="update $table set $setings where $condition";115
//echo $sql;116
$this->result=@mysql_query($sql,$this->dbLink);117
if ($this->result)118
$this->numRows=@mysql_affected_rows($this->result);119
else120
{121
$this->Halt($sql);122
return false;123
}124
return true;125
}126

127
/*SQL:Delete*/128
129
function Delete($table,$condition)130
{131
$sql="delete from $table where $condition";132
$this->result=@mysql_query($sql,$this->dbLink);133
if ($this->result)134
$this->numRows=@mysql_affected_rows($this->result);135
else136
{137
$this->Halt($sql);138
return false;139
} 140
141
return true;142
}143
144
/*Halt():error message */145
146
function Halt($msg)147
{148
if($this->msgFlag=="yes")149
{150
printf("<b>Database Query Error:</b> %s<br>\n", $msg);151
printf("<b>MySql Error:</b> %s<br>\n",mysql_error());152
}153
else154
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=error.htm'>";//自定义一个出错提示文件地址155
return false;156
}157
} 158
switch($db->dbType)159
{160
case 1:161
@mysql_close(); 162
break;163
case 2:164
165
break; 166
} 167
$db = new MysqlDB(); 168

169
?>170

使用方法有两种,只是初始化时不同(不知道为什么,好像构造函数不支持多态,于是只能这样了):
法一:
$db->Select("message","*");
foreach ($db->rows as &$rowss)
{printf ("ID: %s Name: %s <br>", $rowss[0], $rowss[1]);}法二:
$db->MysqlDB2("localhost","root","hicc","gb");
$db->Select("message","*");
foreach ($db->rows as &$rowss)
{printf ("ID: %s Name: %s <br>", $rowss[0], $rowss[1]);}看了PHP的东西,才发现,JAVA果然是很体现OO的语言。

浙公网安备 33010602011771号