简明现代魔法 -> 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();
}
解决问题的思维导图:


