diff options
author | Chanaka Indrajith <pe.chanaka.ck@gmail.com> | 2012-10-31 21:18:38 +0400 |
---|---|---|
committer | Chanaka Indrajith <pe.chanaka.ck@gmail.com> | 2012-10-31 21:18:38 +0400 |
commit | 2e53dd2b7deb4cb71cc1643b3085d7cf5a7f2e1c (patch) | |
tree | 0414f1a81fff43c33c0c6062e6f86b2d8c14fa76 /tbl_export.php | |
parent | 14e94e282c56381ce71ee983cfb8029e36f328cf (diff) |
Generate correct SQL when exporting set of results
Diffstat (limited to 'tbl_export.php')
-rw-r--r-- | tbl_export.php | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/tbl_export.php b/tbl_export.php index 49e9f4c26c..146be7e133 100644 --- a/tbl_export.php +++ b/tbl_export.php @@ -36,34 +36,21 @@ if (! empty($sql_query)) { // Need to generate WHERE clause? if (isset($where_clause)) { - // Yes => rebuild query from scratch; this doesn't work with nested - // selects :-( - $sql_query = 'SELECT '; - if (isset($analyzed_sql[0]['queryflags']['distinct'])) { - $sql_query .= ' DISTINCT '; - } - - $sql_query .= $analyzed_sql[0]['select_expr_clause']; - - if (!empty($analyzed_sql[0]['from_clause'])) { - $sql_query .= ' FROM ' . $analyzed_sql[0]['from_clause']; - } + $temp_sql_array = explode("where", strtolower($sql_query)); - $wheres = array(); - - if (isset($where_clause) && is_array($where_clause) - && count($where_clause) > 0 - ) { - $wheres[] = '(' . implode(') OR (', $where_clause) . ')'; - } - - if (!empty($analyzed_sql[0]['where_clause'])) { - $wheres[] = $analyzed_sql[0]['where_clause']; - } + // The fields which is going to select will remain + // as it is regardless of the where clause(s). + // EX :- The part "SELECT `id`, `name` FROM `customers`" + // will remain same when representing the resulted rows + // from the following query, + // "SELECT `id`, `name` FROM `customers` WHERE id NOT IN + // ( SELECT id FROM companies WHERE name LIKE '%u%')" + $sql_query = $temp_sql_array[0]; - if (count($wheres) > 0) { - $sql_query .= ' WHERE (' . implode(') AND (', $wheres) . ')'; + // Append the where clause using the primary key of each row + if (is_array($where_clause) && (count($where_clause) > 0)) { + $sql_query .= ' WHERE (' . implode(') OR (', $where_clause) . ')'; } if (!empty($analyzed_sql[0]['group_by_clause'])) { |