@@ 187-235 (lines=49) @@ | ||
184 | return 'TOP '.$limit; |
|
185 | } |
|
186 | ||
187 | public function compile_select($database) |
|
188 | { |
|
189 | $sql = ($database['distinct'] == true) ? 'SELECT DISTINCT ' : 'SELECT '; |
|
190 | $sql .= (count($database['select']) > 0) ? implode(', ', $database['select']) : '*'; |
|
191 | ||
192 | if (count($database['from']) > 0) { |
|
193 | // Escape the tables |
|
194 | $froms = array(); |
|
195 | foreach ($database['from'] as $from) { |
|
196 | $froms[] = $this->escape_column($from); |
|
197 | } |
|
198 | $sql .= "\nFROM "; |
|
199 | $sql .= implode(', ', $froms); |
|
200 | } |
|
201 | ||
202 | if (count($database['join']) > 0) { |
|
203 | foreach ($database['join'] as $join) { |
|
204 | $sql .= "\n".$join['type'].'JOIN '.implode(', ', $join['tables']).' ON '.$join['conditions']; |
|
205 | } |
|
206 | } |
|
207 | ||
208 | if (count($database['where']) > 0) { |
|
209 | $sql .= "\nWHERE "; |
|
210 | } |
|
211 | ||
212 | $sql .= implode("\n", $database['where']); |
|
213 | ||
214 | if (count($database['groupby']) > 0) { |
|
215 | $sql .= "\nGROUP BY "; |
|
216 | $sql .= implode(', ', $database['groupby']); |
|
217 | } |
|
218 | ||
219 | if (count($database['having']) > 0) { |
|
220 | $sql .= "\nHAVING "; |
|
221 | $sql .= implode("\n", $database['having']); |
|
222 | } |
|
223 | ||
224 | if (count($database['orderby']) > 0) { |
|
225 | $sql .= "\nORDER BY "; |
|
226 | $sql .= implode(', ', $database['orderby']); |
|
227 | } |
|
228 | ||
229 | if (is_numeric($database['limit'])) { |
|
230 | $sql .= "\n"; |
|
231 | $sql .= $this->limit($database['limit']); |
|
232 | } |
|
233 | ||
234 | return $sql; |
|
235 | } |
|
236 | ||
237 | public function escape_str($str) |
|
238 | { |
@@ 202-250 (lines=49) @@ | ||
199 | return 'LIMIT '.$offset.', '.$limit; |
|
200 | } |
|
201 | ||
202 | public function compile_select($database) |
|
203 | { |
|
204 | $sql = ($database['distinct'] == true) ? 'SELECT DISTINCT ' : 'SELECT '; |
|
205 | $sql .= (count($database['select']) > 0) ? implode(', ', $database['select']) : '*'; |
|
206 | ||
207 | if (count($database['from']) > 0) { |
|
208 | // Escape the tables |
|
209 | $froms = array(); |
|
210 | foreach ($database['from'] as $from) { |
|
211 | $froms[] = $this->escape_column($from); |
|
212 | } |
|
213 | $sql .= "\nFROM ("; |
|
214 | $sql .= implode(', ', $froms).")"; |
|
215 | } |
|
216 | ||
217 | if (count($database['join']) > 0) { |
|
218 | foreach ($database['join'] as $join) { |
|
219 | $sql .= "\n".$join['type'].'JOIN '.implode(', ', $join['tables']).' ON '.$join['conditions']; |
|
220 | } |
|
221 | } |
|
222 | ||
223 | if (count($database['where']) > 0) { |
|
224 | $sql .= "\nWHERE "; |
|
225 | } |
|
226 | ||
227 | $sql .= implode("\n", $database['where']); |
|
228 | ||
229 | if (count($database['groupby']) > 0) { |
|
230 | $sql .= "\nGROUP BY "; |
|
231 | $sql .= implode(', ', $database['groupby']); |
|
232 | } |
|
233 | ||
234 | if (count($database['having']) > 0) { |
|
235 | $sql .= "\nHAVING "; |
|
236 | $sql .= implode("\n", $database['having']); |
|
237 | } |
|
238 | ||
239 | if (count($database['orderby']) > 0) { |
|
240 | $sql .= "\nORDER BY "; |
|
241 | $sql .= implode(', ', $database['orderby']); |
|
242 | } |
|
243 | ||
244 | if (is_numeric($database['limit'])) { |
|
245 | $sql .= "\n"; |
|
246 | $sql .= $this->limit($database['limit'], $database['offset']); |
|
247 | } |
|
248 | ||
249 | return $sql; |
|
250 | } |
|
251 | ||
252 | public function escape_str($str) |
|
253 | { |