You can access MySQL tables in an objective way. Suppose you have a table named Users that has fields: UserID, UserName, UserPassword, UserBirthday, you can create a PHP class extending DataObject that is associated with this table:<?php class User extends DataObject { protected static $_table = array('name' => 'Users', 'key' => 'UserID', 'auto' => 'UserID'); protected static $_propertyList = array('id' => 'UserID', 'name' => 'UserName', 'password' => 'UserPassword', 'birthday' => 'UserBirthday'); public static function GetAll() { global $dbh; $sql = 'SELECT * FROM Users'; $stmt = $dbh->query($sql); $users = array(); while ($user = $stmt->fetchObject(__CLASS__)) { $users[] = $user; } return $users; } public static function GetUserByName($name) {} public static function GetUserByID($name) {} public function checkPassword($password) {return $this->password == $password;} public function showLink() {return "<a href=\"user.php?i={$this->id}\">{$this->name}</a>";}}$user = new User();$user->name = 'oct1158';$user->password = '789012';$user->useFunction('birthday', 'NOW()');echo 'Field birthday uses MySQL Function: ', $user->birthday, '<br>';if ($user->insert()) { echo 'New User ID: ', $user->id, '<br>'; $user->password = '112233'; $user->update();} else { echo 'INSERT Failed<br>';}$sql = 'SELECT * FROM Users WHERE UserName = ?';$stmt = $dbh->prepare($sql);$stmt->execute(array('admin'));$admin_user = $stmt->fetchObject('User');echo 'Admin ID is ', $admin_user->id, '.<br>';echo 'Admin Birthday is ', $admin_user->birthday, '.<br>';$users = User::GetAll();echo '<br>';echo $users[0]->name, ', ', $users[0]->birthday, '<br>';echo $users[1]->name, ', ', $users[1]->birthday, '<br>';echo $users[2]->name, ', ', $users[2]->birthday, '<br>';echo '<br>';$user = new User();$user->insert();$user->delete();?>The DataObject class example:<?php class DataObject { private $changedFields = array(); private $data = array(); private $funcFields = array(); function __get($property) { if (isset($this::$_propertyList[$property])) { return $this->data[$this::$_propertyList[$property]]; } else { return $this->$property; } } function __set($property, $value) { if (isset($this::$_propertyList[$property])) { $field = $this::$_propertyList[$property]; $this->data[$field] = $value; if (!in_array($field, $this->changedFields)) { array_push($this->changedFields, $field); } $index = array_search($field, $this->funcFields); if ($index !== false) { unset($this->funcFields[$index]); $this->funcFields = array_values($this->funcFields); } } else { $this->data[$property] = $value; } } private function checkPrimaryKey() {} private function clear() {} public function delete() {} public function insert() {} public function update() {} public function useFunction($property, $function) {}}?>