From 2707bcba7dbeb05513b3007c7495079dad907588 Mon Sep 17 00:00:00 2001 From: Sergey Tsalkov Date: Fri, 6 Dec 2013 11:17:54 -0800 Subject: [PATCH] minor bugfix: don't drop identical query components in WhereClause (thanks Alexander!) --- db.class.php | 4 +--- simpletest/WhereClauseTest.php | 9 +++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/db.class.php b/db.class.php index acfcc37..a04db26 100644 --- a/db.class.php +++ b/db.class.php @@ -790,12 +790,11 @@ class WhereClause { } function textAndArgs() { - $sql = ''; + $sql = array(); $args = array(); if (count($this->clauses) == 0) return array('(1)', $args); - $sql = array(); foreach ($this->clauses as $clause) { if ($clause instanceof WhereClause) { list($clause_sql, $clause_args) = $clause->textAndArgs(); @@ -808,7 +807,6 @@ class WhereClause { $args = array_merge($args, $clause_args); } - $sql = array_unique($sql); if ($this->type == 'and') $sql = implode(' AND ', $sql); else $sql = implode(' OR ', $sql); diff --git a/simpletest/WhereClauseTest.php b/simpletest/WhereClauseTest.php index 5cfca5d..c867e43 100644 --- a/simpletest/WhereClauseTest.php +++ b/simpletest/WhereClauseTest.php @@ -57,6 +57,15 @@ class WhereClauseTest extends SimpleTest { $this->assert(count($result) === 1); $this->assert($result[0]['age'] === '15'); } + + function test_6_or() { + $where = new WhereClause('or'); + $where->add('username=%s', 'Bart'); + $where->add('username=%s', 'Abe'); + + $result = DB::query("SELECT * FROM accounts WHERE %l", $where); + $this->assert(count($result) === 2); + } }