I tried to simplify it, but let me just post all of the major components of the code. First the code used to envoke all of these classes: [code] <?php $q = new Albums(); $q->Album_id->equals(3); $q->debugLevel(2); $q->find(); while($q->fetch()) { echo $q->Album_id.'<br />'; } ?> [/code] The important part of the Albums class: [code] <?php require_once("DataObject.php"); require_once("DataObjectColumn.php"); class Albums extends DataObject { var $Id = null; var $Album_Name = null; function Albums() { $this->DataObject(); $this->clearObject(); } function clearObject() { $this->Id = new DataObjectColumn($this, 'Id', false); $this->Album_Name = new DataObjectColumn($this, 'Album_Name', true); } ?> [/code] The DataObjectColumn class: [code] <?php class DataObjectColumn { var $column = null; var $requires_quote = null; var $data_object = null; function DataObjectColumn(&$dataobject, $column_name, $requires_quote) { $this->data_object =& $dataobject; $this->column = $column_name; $this->requires_quote = $requires_quote; } function equals($value) { $sql = $this->data_object->quoteID($this->column) .' = '. $this->data_object->quote($value); $this->data_object->addWhere($sql); } } ?> [/code] And finally the declaration of vars, constructor and member functions used above I included in the DataObject class [code] <?php require_once("DataLayer.php"); class DataObject extends DataLayer { var $result = null; var $args = null; var $sorts = null; var $whereConditions = null; var $selectDistinct = false; var $debugLevel = 0; var $test = 0; function DataObject() { $this->DataLayer(); $this->args = array(); $this->sorts = array(); unset($this->result); } function quote($data) { if(!is_object($data)) return '\'' . mysql_real_escape_string($data) . '\''; else return '\'' . mysql_real_escape_string($data->data_object) . '\''; } function quoteID( $field ) { return "`$field`"; } function addWhere($sql) { if($this->whereConditions != null) { $this->whereConditions .= ' AND '.$sql; } else { $this->whereConditions = $sql; } } function find() { echo $this->whereConditions; ?> [/code] Now when I echo that variable it is null. Even though if you echo it in addWheres it has the value of 3. The DataLayer class just opens up a link to the database. Any ideas as to what I am doing wrong?