参考:http://www.ibm.com/developerworks/cn/opensource/os-php-flexobj/
需要PHP5支持才行,使用了__call __get __set等动态方法
class DBObject
{
private $id = 0;
private $table;
private $fields = array();
function __construct( $table, $fields )
{
$this->table = $table; //数据表名
foreach( $fields as $key )
$this->fields[ $key ] = null; //数据字段
}
function __get( $key ) //可读字段
{
return $this->fields[ $key ];
}
function __set( $key, $value ) //可写字段
{
if ( array_key_exists( $key, $this->fields ) )
{ //添加条件可以限制某些字段不能写
$this->fields[ $key ] = $value;
return true;
}
return false;
}
function load( $id )
{
global $db; //数据库对象
$res = $db->query(
"SELECT * FROM ".$this->table." WHERE ".
$this->table."_id=?",
array( $id )
);
$res->fetchInto( $row, DB_FETCHMODE_ASSOC );
$this->id = $id;
foreach( array_keys( $row ) as $key )
$this->fields[ $key ] = $row[ $key ];
}
function insert()
{
global $db;
$fields = $this->table."_id, ";
$fields .= join( ", ", array_keys( $this->fields ) );
$inspoints = array( "0" );
foreach( array_keys( $this->fields ) as $field )
$inspoints []= "?";
$inspt = join( ", ", $inspoints );
$sql = "INSERT INTO ".$this->table." ( $fields )
VALUES ( $inspt )";
$values = array();
foreach( array_keys( $this->fields ) as $field )
$values []= $this->fields[ $field ];
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
$res = $db->query( "SELECT last_insert_id()" );
$res->fetchInto( $row );
$this->id = $row[0];
return $row[0];
}
function update()
{
global $db;
$sets = array();
$values = array();
foreach( array_keys( $this->fields ) as $field )
{
$sets []= $field.'=?';
$values []= $this->fields[ $field ];
}
$set = join( ", ", $sets );
$values []= $this->id;
$sql = 'UPDATE '.$this->table.' SET '.$set.
' WHERE '.$this->table.'_id=?';
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
}
function delete()
{
global $db;
$sth = $db->prepare(
'DELETE FROM '.$this->table.' WHERE '.
$this->table.'_id=?'
);
$db->execute( $sth,
array( $this->id ) );
}
function delete_all()
{
global $db;
$sth = $db->prepare( 'DELETE FROM '.$this->table );
$db->execute( $sth );
}
}
继承时覆盖_construct 方法
function __construct()
{
parent::__construct( 'book',
array( 'author', 'title', 'publisher' ) );
}
分享到:
相关推荐
在PHP开发中,数据库操作是核心部分,而一个强大且通用的PHP数据库操作类能极大地提升开发效率,降低出错概率。这类类库通常封装了基本的SQL查询功能,如增删改查(CRUD),事务处理,错误处理,以及预处理语句等,...
一个基础的PHP MySQL数据库操作类通常包括以下组件: 1. **连接函数**:用于建立与MySQL服务器的连接,可能包含数据库服务器地址、用户名、密码和数据库名等参数。 ```php class DB { public function connect($...
在PHP7中,MySQL数据库操作通常使用mysqli或PDO_MySQL扩展进行,但对于新手来说,创建一个封装好的数据库操作类可以简化很多工作。这个实例主要介绍如何构建一个PHP7中的MySQL数据库操作类,以实现连接、查询、插入...
标题中的“PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】”指的是一个...总的来说,这个基于PDO的数据库操作类是一个实用工具,简化了多数据库环境下的PHP数据库操作,提高了代码的可维护性和可扩展性。
本篇文章将深入探讨如何使用PHP实现一个MySQL数据库操作类,包括连接、查询、插入、更新和删除数据等核心功能。 首先,我们需要创建一个名为`MySQLDB`的类,该类将封装所有的数据库交互逻辑。以下是一个基本的类...
而`PDO`(PHP Data Objects)则是一个更通用的数据库访问接口,支持多种数据库类型,包括MySQL。这个"简单实用的php mysql数据库连接类"可能就是基于这两种方法之一,提供了一种封装的连接管理方式。 类的基本结构...
本压缩包提供了一个自编写的PHP+MySQL数据库类,这个类旨在简化数据库操作,便于开发人员快速、高效地进行数据库交互。下面将详细阐述相关知识点。 首先,PHP是一种广泛使用的服务器端脚本语言,尤其适合于Web开发...
- PDO (PHP Data Objects):PDO 是 PHP 提供的一个数据库访问层,支持多种数据库,如 MySQL、SQLite、PostgreSQL 等。使用 PDO 可以编写可移植的代码,因为它提供了统一的接口来处理不同数据库的特性。通过预处理...
一个常用php mysql数据库连接类,这是比较基础的东西,能过构造函数来实现创建类就自动与mysql服务器进行连接,只要设置好 $name,$pass,$table三个变量的值就好了。
文件名“tool”可能表示这是一个基础工具类,包含了上述功能的实现。使用这样的工具类可以使代码更加简洁、可维护,同时降低了出错的可能性。在开发过程中,合理地利用这些工具可以大大提高开发效率。
本文将深入探讨“php+mysql数据库操作类 v1.0”,这是一个专为初学者设计的简单易用的PHP数据库操作类,旨在帮助初学者快速理解和应用PHP与MySQL的结合。 首先,我们来看看核心文件`mysql.class.php`。这个文件定义...
总的来说,这个"完整的php操作MySQL数据库类"为PHP开发者提供了一个统一的接口来操作MySQL数据库,简化了数据库交互的代码,使得开发更加高效。使用此类,开发者可以更专注于业务逻辑,而不是重复的数据库操作代码。...
"PHP数据库操作类"就是一种为了简化数据库交互而设计的工具。它封装了常见的SQL语句,如SELECT、INSERT、UPDATE和DELETE,使开发者可以更高效、更安全地进行数据库管理。 这个简单的数据库操作类可能包含以下关键...
首先,一个理想的PHP数据库操作类应该遵循SOLID原则,即单一职责原则(Single Responsibility Principle)、开放封闭原则(Open-Closed Principle)、里氏替换原则(Liskov Substitution Principle)、接口隔离原则...
"数据库操作类"是一个为了简化数据库交互而设计的代码模块,它通常包含了连接、查询、插入、更新和删除数据等功能。这类类库可以提高代码的可读性、可维护性和复用性,降低出错的可能性。 在PHP中,数据库操作类的...
有了这样一个基础的数据库操作类,开发者就可以轻松地在PHP项目中进行数据库交互,无需在每个页面上重复设置连接和处理结果。通过继承或组合,还可以进一步扩展这个类,以适应特定项目的需求,比如添加缓存支持、...
`Database` 类可能是这个类库的基础类,包含了共性的数据库操作方法,如连接、断开连接、错误处理等。子类可能继承自`Database`,并针对具体的数据库系统(MySQL、MSSQL、Oracle、SQLite)进行特定的实现。 压缩包...
这款PHP MySQL操作类提供了全面的功能,涵盖了数据的查询、更新、删除等操作,适用于初学者进行学习和实践,同时也为有经验的开发者提供了一个可自定义的基础框架。下面我们将详细讨论其中涉及的关键知识点。 1. **...
`mysqldump`是一个实用程序,能够创建数据库或其部分的结构和数据的转储文件,可以用于在另一个数据库中重新创建原始数据库或进行数据恢复。在PHP中,可以通过调用shell命令或者使用MySQLi或PDO_MySQL扩展的函数来...
首先,"mysqlclass"是压缩包中的核心文件,它很可能是一个包含了数据库连接、查询、插入、更新和删除等基本操作的PHP类。这个类通常封装了MySQLi或PDO_MySQL扩展,以更安全、高效的方式执行SQL语句。对于初学者而言...