MySQL数据库操作类


      开始弄PHP,发现和ASP超像,OO还处于初级阶段,发现PHP自带的类库太强了,只要熟悉了类库,基本不用自己写什么了,先搞掂一个数据库操作类。
Code
  1<?php
  2//------------------------------------------------------------------------------------------ 
  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 server
 14    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    
 25class MysqlDB
 26{
 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        else
 67        {
 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        else
 86        {
 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      else
103        {
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      else
120        {
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      else
136        {
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        else
154            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]);}
注:message是表名。

法二:
$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的语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值