最近开始学习php 因为以前主要是在asp.net下写web应用程序,刚开始接触php的mysql函数的时候,感觉有些不习惯.试着按照ado.net的一些形式对mysql函数做了一个简单的封装.
目前主要有三个类mysqlclient_connection / mysqlclient_command / mysqlclient_datareader:
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 "