其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一个封装mysql函数的类

作者:未知 来源:月光软件站 加入时间:2005-6-5 月光软件站

最近开始学习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,写的代码不是很成熟,希望各们朋友能提供修改意见. 非常感谢!


    相关文章

    相关软件