转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
一个封装mysql函数的类         ★★★★

一个封装mysql函数的类

作者:闵涛 文章来源:闵涛的学习笔记 点击数:994 更新时间:2009/4/22 20:48:27

最近开始学习PHP 因为以前主要是在Asp.Net下写WEB应用程序,刚开始接触PHP的mysql函数的时候,感觉有些不习惯.试着按照ADO.Net的一些形式对mysql函数做了一个简单的封装.
目前主要有三个类mysqlclient_connection / mysqlclient_command / mysqlclient_dataReader:

  • mysqlclient_connection 负责与mysql server建立连接
  • mysqlclient_command 为该类提供mysqlclient_connection和SQL Query后,执行mysql_query函数.
  • mysqlclient_dataReader 为该类提供mysql_query返回的结果集,读取结果集的数据和字段信息. 关于类的代码如下:
    	class mysqlclient_connection
    	{
    		private $status;
    		private $handle;
    		private $server;
    		private $database;
    		private $username;
    		private $password;
    		public function __construct($server,$database,$username,$password)
    		{
    			$status = "closed";
    			$handle = 0;
    			$thi-->server = $server;
    			$this->database = $database;
    			$this->username = $username;
    			$this->password = $password;
    		}
    		
    		public function open()
    		{
    			$this->handle = mysql_connect($this->server,$this->username,$this->password) or die("connect mysql faild.");
    			if($this->handle != 0)
    			{
    				//echo "$this->database";
    				mysql_select_db($this->database,$this->handle) or ("database ".$database." is not exists or reject visited");
    			}
    			else
    			{
    				die("handle == 0");
    			}
    			$this->status = "open";
    			return true;
    		}
    		
    		public function close()
    		{
    			if($this->status == "open")
    			{
    				mysql_close($this->handle) or die("falid close this connection");
    				$this->status = "closed";
    				return true;
    			}
    			else
    			{
    				die("this connection is closed");
    			}
    		}
    		
    		public function getHandle()
    		{
    			return $this->handle;
    		}
    		
    		public function __destruct()
    		{
    			if($this->status == "open")
    			{
    				mysql_close($this->handle) or die("faild close this connection");
    				$this->status = "closed";
    				//return true;
    			}
    		}
    	}
    	
    	class mysqlclient_command
    	{
    		private $commandString;
    		private $activeConnection;
    		
    		public function __construct($commandString)
    		{
    			$this->commandString = $commandString;
    		}
    		
    		public function  setActiveConnection($connection)
    		{
    			$this->activeConnection = $connection;
    		}
    		
    		public function executeDataReader()
    		{
    			if($this->activeConnection->getHandle() == 0)
    			{
    				die("this command does not have a active connection");
    			}
    			//mysql_select_db("mxb",$this->activeConnection->getHandle()) or die("selected faild again");
    			$result = mysql_query($this->commandString,$this->activeConnection->getHandle()) or die($this->commandString . $this->activeConnection->getHandle().mysql_error());
    			return $result;
    		}
    		
    		public function __destruct()
    		{
    			//
    		}
    	}
    	
    	class mysqlclient_dataReader
    	{
    		private $result;
    		private $rowsCount;
    		private $fieldsCount;
    		private static $currentPos;
    		public function __construct()
    		{
    			mysqlclient_dataReader::$currentPos = 0;
    		}
    		
    		public function setResult($result)
    		{
    			$this->result = $result;
    			$this->rowsCount = mysql_num_rows($this->result);
    			$this->fieldsCount = mysql_num_fields($this->result);
    		}
    		
    		public function nextRecord()
    		{
    			if(mysqlclient_dataReader::$currentPos < $this->rowsCount)
    			{
    				$tempRow = mysql_fetch_array($this->result);
    				mysqlclient_dataReader::$currentPos++;
    				
    				return $tempRow;
    			}
    			else
    			{
    				return false;
    			}
    		}
    		
    		public function getFieldsRow()
    		{
    			for($i=0;$i<$this->fieldsCount;$i++)
    			{
    				$field = mysql_fetch_field($this->result,$i);
    				$fieldsRow[] = $field;
    				
    				return $fieldsRow; 
    			}
    		}
    		
    		public function __destruct()
    		{
    			//
    		}
    	}
    


    我自己写了一个测试类的简单的php页 列出指定表中的数据 code:
    			$connection = new mysqlclient_connection(SERVER,DATABASE,USERNAME,PASSWORD);
    			$command = new mysqlclient_command("select * from user");
    			//$comman-->activeConnection = $connection;
    			$command->setActiveConnection($connection);
    			
    			$connection->open();
    			$result = $command->executeDataReader();
    			$reader = new mysqlclient_dataReader();
    			$reader->setResult($result);
    			while($row = $reader->nextRecord())
    			{
    				echo "
  • ".$row["id"]." : ".$row["name"]; } $connection->close(); ?>
  • 因为刚开始接触PHP,写的代码不是很成熟,希望各们朋友能提供修改意见. 非常感谢!


    没有相关教程
    教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台