简明现代魔法 -> PHP服务器脚本 -> 面向对象的数据库操作

面向对象的数据库操作

2010-02-22

首先将数据库的连接信息,还有数据库连接方法等等写成一个类 DBConnector。这个类可以用于 MySQL,也可以用于 SQL Server。

his_database.php

<?php
class DBConnector
{
	var $dbname;
	var $login;
	var $password;
	var $ip;
	var $conn;
	var $enableTransaction;
	
	function DBConnector()
	{
		 /* 数据库的用户名、密码、数据库名、数据库地址 */
         $this->dbname = DB_DATABASE;
		 $this->login= DB_SERVER_USERNAME;
		 $this->password = DB_SERVER_PASSWORD;
		 $this->ip = DB_SERVER;
		 $this->enableTransaction = true;
	}

	function mysql_connect1()
	{
		/* 连接数据库 */
        $this->conn = mysql_connect($this->ip, $this->login, $this->password);	
		if ($this->conn)
		{
			if (DEBUG_DB)
			{
				echo 'Connected successfully<br>';
			}
			// add [, ] for some DB name has '-'
            /* 选择要操作的数据库 */
			$conn2 = mysql_select_db($this -> dbname, $this -> conn);
			if (!$conn2)
			{
				if (DEBUG_DB)
				{
					echo 'select db ['.$this->dbname.'] failed<br>';
				}
				$this->mysql_close();
			}
			if ($this->enableTransaction)
			{
				$this->mysql_begin_transaction();
			}
		}
        /* 返回数据库连接对象 */
		return $this->conn;
	}
	
	function mysql_begin_transaction() 
	{
		 mysql_query("SET AUTOCOMMIT=0");
		 mysql_query("BEGIN");
	}
	
	function mysql_commit() 
	{
		mysql_query("COMMIT");
	}
	
	function mysql_rollback() 
	{
		mysql_query("ROLLBACK");
	}
	
	function mysql_close($value = false)
	{
		if ($this -> enableTransaction)
		{
			if ($value)
			{
				$this->mysql_commit();
			}
			else
			{
				$this->mysql_rollback();
			}
		}
		mysql_close(); 
	}	

	function mssql_connect1()
	{
		$this->conn = mssql_connect($this->ip, $this->login, $this->password);	
		
		if ($this->conn)
		{
			//echo' connected';
            // add [, ] for some DB name has '-'
			$conn2 = mssql_select_db("[$this->dbname]", $this->conn);
			if (!$conn2)
			{
				$this->mssql_close();
			}
			if ($this->enableTransaction)
			{
				$this->mssql_begin_transaction();
			}
		}
		return $this->conn;
	}
	
	function mssql_close($value = false)
	{
		if ($this->enableTransaction)
		{
			if ($value)
			{
				$this->mssql_commit();
			}
			else
			{
				$this->mssql_rollback();
			}
		}
		mssql_close(); 
	}	
	
	function setTransaction($value)
	{ 	// pass boolean value here
		$this->enableTransaction = $value;
	}
	
	function mssql_begin_transaction() 
	{
	  	mssql_query("BEGIN TRANSACTION");
	}
	
	function mssql_commit() 
	{
	  	mssql_query("COMMIT");
	}
	
	function mssql_rollback() 
	{
	  	mssql_query("ROLLBACK");
	}
	
	function mssql_insert_id() 
	{
	  	$id = "";
	
	  	$rs = mssql_query("SELECT @@identity AS id");
	  	if ($row = mssql_fetch_row($rs)) 
		{
	    	$id = trim($row[0]);
	  	}
	  	mssql_free_result($rs);
	
	  	return $id;
	}
}
?>

怎么使用这个类呢?

// 创建一个数据库连接对象 
$dbc = new DBConnector();
// 调用对象 $dbc 的 mysql_connect1() 方法声称数据库连接变量 
$conn = $dbc->mysql_connect1();

// 如果数据库已经连接
if ($conn)
{
	// SQL 语句
    $query = "update news set view = '$view' where news_id = $news_id";
    // 执行 SQL
    $result = mysql_query( $query );
    
    mysql_free_result($result);
	$dbc->mysql_close();
}

解决问题的思维导图:

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们