I haven't coded PHP in a while, so I was wondering how I could expand my knowledge of OOP through a hands on practice. What I've done is tried to make everything an object; I've not got so far yet, but if any PHP gurus could criticize my code and give me some tips for improvement I'd be grateful lib/database.php: <?php class database { public static $connection; public function __construct($db_host = DB_HOST, $db_name = DB_NAME, $db_username = DB_USERNAME, $db_password = DB_PASSWORD) { self::$connection = mysql_connect($db_host.':'.$db_port, $db_username, $db_password) or errors::write_error('MySQL Connection failure'); mysql_select_db($db_name, self::$connection) or errors::write_error('MySQL Database selection failure'); } } class query { public $sql; public $success; public $resource; public function __construct($sql, $autoprefix = true, $autoexecute = true) { $this->sql = $sql; if($autoprefix === true) $this->prefix(); if($autoexecute === true) $this->execute(); } public function prefix() { $this->sql = str_replace("#", DB_TBLPREFIX, $this->sql); } public function execute() { $this->resource = mysql_query($this->sql, database::$connection) or errors::write_error(mysql_error(database::$connection)); $this->success = (is_resource($this->resource)) ? true : false; } } class insert_query extends query { protected $table; protected $fields; protected $values; const RAW_DATA = 1; public function __construct($table, $fields, $values) { if(count($fields) == count($values)) { $this->table = $table; $this->fields = implode(',', $fields); foreach($values as $k => $value) { if(is_array($value)) { if(count($value) == 2 && $value[0] == self::RAW_DATA) { $this->values .= $value[1].','; } } else { $this->values .= '\''.$value.'\','; } } $this->values = substr($this->values, 0, (strlen($this->values) - 1)); return parent::__construct('INSERT INTO `'.$this->table.'` ('.$this->fields.') VALUES ('.$this->values.')'); } else { errors::write_error('Field count did not match value count'); return false; } } } ?> Code (markup): index.php (example usage): <pre> <?php include '../config.php'; include 'lib/errors.php'; include 'lib/database.php'; $database = new database(); $query = new query("SELECT hello FROM #_world"); while($names = mysql_fetch_array($query->resource)) { echo $names['hello']."\n"; } $insert = new insert_query('#_world', array('hello'), array('Will')); ?></pre> Code (markup):