/** * Convert a SQLQuery object into a SQL statement * @param $query SQLQuery */ public function sqlQueryToString(SQLQuery $query) { if ($query->getDelete()) { $text = 'DELETE '; } else { $text = $this->sqlSelectToString($query->getSelect(), $query->getDistinct()); } if ($query->getFrom()) { $text .= $this->sqlFromToString($query->getFrom()); } if ($query->getWhere()) { $text .= $this->sqlWhereToString($query->getWhere(), $query->getConnective()); } // these clauses only make sense in SELECT queries, not DELETE if (!$query->getDelete()) { if ($query->getGroupBy()) { $text .= $this->sqlGroupByToString($query->getGroupBy()); } if ($query->getHaving()) { $text .= $this->sqlHavingToString($query->getHaving()); } if ($query->getOrderBy()) { $text .= $this->sqlOrderByToString($query->getOrderBy()); } if ($query->getLimit()) { $text .= $this->sqlLimitToString($query->getLimit()); } } return $text; }
/** * Convert a SQLQuery object into a SQL statement * Caution: Expects correctly quoted and escaped SQL fragments. * * @param $query SQLQuery */ public function sqlQueryToString(SQLQuery $query) { if ($query->getDelete()) { //Appended space at the end of string causing an issue but this might not be the best solution //@see sqlSelectToString() sqlFromToString $text = 'DELETE'; } else { if ($traverse = $query->getTraverse()) { //Build the traverse string here $text = $this->sqlTraverseToString($traverse); } else { $text = $this->sqlSelectToString($query->getSelect(), $query->getDistinct()); } } if ($query->getFrom()) { $text .= $this->sqlFromToString($query->getFrom()); } if ($query->getWhere()) { $text .= $this->sqlWhereToString($query->getWhere(), $query->getConnective()); } // these clauses only make sense in SELECT queries, not DELETE if (!$query->getDelete()) { if ($query->getGroupBy()) { $text .= $this->sqlGroupByToString($query->getGroupBy()); } if ($query->getHaving()) { $text .= $this->sqlHavingToString($query->getHaving()); } if ($query->getOrderBy()) { $text .= $this->sqlOrderByToString($query->getOrderBy()); } if ($query->getLimit()) { $text .= $this->sqlLimitToString($query->getLimit()); } } // SS_Log::log(new Exception(print_r($text, true)), SS_Log::NOTICE); return $text; }