private function buildWhere()
    {
        $query = array();

        // Make sure there's something to do
        if (isset($this->query['where']) and count($this->query['where'])) {
            foreach ($this->query['where'] as $group => $conditions) {
                $group = array(); // Yes, because the $group above is not used, get over it.
                foreach ($conditions as $condition => $value) {
                    // Get column name
                    $cond = explode(" ", $condition);
                    $column = str_replace('`', '', $cond[0]);
                    $safeColumn = $this->columnName($column);

                    // Make the column name safe
                    $condition = str_replace($column, $safeColumn, $condition);

                    // Add value to the bind queue
                    $valueBindKey = str_replace(array('.', '`'), array('_', ''), $safeColumn);

                    if (!empty($value) or $value !== null) {
                        $this->valuesToBind[$valueBindKey] = $value;
                    }

                    // Add condition to group
                    $group[] = str_replace("?", ":{$valueBindKey}", $condition);
                }

                // Add the group
                $query[] = "(" . implode(" AND ", $group) . ")";
            }

            // Return
            return "WHERE " . implode(" OR ", $query);
        }
    }