public function buildSelect($table, array $where, array $options = []) {
        $sql = '';

        // Build the select clause.
        if (isset($options['columns'])) {
            $columns = array();
            foreach ($options['columns'] as $value) {
                $columns[] = $this->backtick($value);
            }
            $sql .= 'select '.implode(', ', $columns);
        } else {
            $sql .= "select *";
        }

        // Build the from clause.
        if (val('escapeTable', $options, true)) {
            $sql .= "\nfrom ".$this->backtick($this->px.$table);
        } else {
            $sql .= "\nfrom $table";
        }

        // Build the where clause.
        $whereString = $this->buildWhere($where, Db::OP_AND);
        if ($whereString) {
            $sql .= "\nwhere ".$whereString;
        }

        // Build the order.
        if (isset($options['order'])) {
            $order = array_quick($options['order'], Db::ORDER_ASC);
            $orders = array();
            foreach ($order as $key => $value) {
                switch ($value) {
                    case Db::ORDER_ASC:
                    case Db::ORDER_DESC:
                        $orders[] = $this->backtick($key)." $value";
                        break;
                    default:
                        trigger_error("Invalid sort direction '$value' for column '$key'.", E_USER_WARNING);
                }
            }

            $sql .= "\norder by ".implode(', ', $orders);
        }

        // Build the limit, offset.
        $limit = 10;
        if (isset($options['limit'])) {
            $limit = (int)$options['limit'];
            $sql .= "\nlimit $limit";
        }

        if (isset($options['offset'])) {
            $sql .= ' offset '.((int)$options['offset']);
        } elseif (isset($options['page'])) {
            $offset = $limit * ($options['page'] - 1);
            $sql .= ' offset '.$offset;
        }

        return $sql;
    }
public function buildSelect($table, array $where, array $options = []) {
        $sql = '';

        // Build the select clause.
        if (isset($options['columns'])) {
            $columns = array();
            foreach ($options['columns'] as $value) {
                $columns[] = $this->backtick($value);
            }
            $sql .= 'select '.implode(', ', $columns);
        } else {
            $sql .= "select *";
        }

        // Build the from clause.
        if (val('escapeTable', $options, true)) {
            $sql .= "\nfrom ".$this->backtick($this->px.$table);
        } else {
            $sql .= "\nfrom $table";
        }

        // Build the where clause.
        $whereString = $this->buildWhere($where, Db::OP_AND);
        if ($whereString) {
            $sql .= "\nwhere ".$whereString;
        }

        // Build the order.
        if (isset($options['order'])) {
            $order = array_quick($options['order'], Db::ORDER_ASC);
            $orders = array();
            foreach ($order as $key => $value) {
                switch ($value) {
                    case Db::ORDER_ASC:
                    case Db::ORDER_DESC:
                        $orders[] = $this->backtick($key)." $value";
                        break;
                    default:
                        trigger_error("Invalid sort direction '$value' for column '$key'.", E_USER_WARNING);
                }
            }

            $sql .= "\norder by ".implode(', ', $orders);
        }

        // Build the limit, offset.
        $limit = 10;
        if (isset($options['limit'])) {
            $limit = (int)$options['limit'];
            $sql .= "\nlimit $limit";
        }

        if (isset($options['offset'])) {
            $sql .= ' offset '.((int)$options['offset']);
        } elseif (isset($options['page'])) {
            $offset = $limit * ($options['page'] - 1);
            $sql .= ' offset '.$offset;
        }

        return $sql;
    }
public function buildSelect ( $ table , array $ where , array $ options = [ ] ) { $ sql = '' ; // Build the select clause. if ( isset ( $ options [ 'columns' ] ) ) { $ columns = array ( ) ; foreach ( $ options [ 'columns' ] as $ value ) { $ columns [ ] = $ this -> backtick ( $ value ) ; } $ sql .= 'select ' . implode ( ', ' , $ columns ) ; } else { $ sql .= "select *" ; } // Build the from clause. if ( val ( 'escapeTable' , $ options , true ) ) { $ sql .= "\nfrom " . $ this -> backtick ( $ this -> px . $ table ) ; } else { $ sql .= "\nfrom $table" ; } // Build the where clause. $ whereString = $ this -> buildWhere ( $ where , Db :: OP_AND ) ; if ( $ whereString ) { $ sql .= "\nwhere " . $ whereString ; } // Build the order. if ( isset ( $ options [ 'order' ] ) ) { $ order = array_quick ( $ options [ 'order' ] , Db :: ORDER_ASC ) ; $ orders = array ( ) ; foreach ( $ order as $ key => $ value ) { switch ( $ value ) { case Db :: ORDER_ASC : case Db :: ORDER_DESC : $ orders [ ] = $ this -> backtick ( $ key ) . " $value" ; break ; default : trigger_error ( "Invalid sort direction '$value' for column '$key'." , E_USER_WARNING ) ; } } $ sql .= "\norder by " . implode ( ', ' , $ orders ) ; } // Build the limit, offset. $ limit = 10 ; if ( isset ( $ options [ 'limit' ] ) ) { $ limit = ( int ) $ options [ 'limit' ] ; $ sql .= "\nlimit $limit" ; } if ( isset ( $ options [ 'offset' ] ) ) { $ sql .= ' offset ' . ( ( int ) $ options [ 'offset' ] ) ; } elseif ( isset ( $ options [ 'page' ] ) ) { $ offset = $ limit * ( $ options [ 'page' ] - 1 ) ; $ sql .= ' offset ' . $ offset ; } return $ sql ; }
Build a sql select statement.

@param string $table The name of the main table.
@param array $where The where filter.
@param array $options An array of additional query options.
@return string Returns the select statement as a string.
@see Db::get()
Build a sql select statement .