From ac175f77bc3f7960f826746eed54006eda758dd3 Mon Sep 17 00:00:00 2001 From: Cameron Ball Date: Fri, 28 Nov 2014 15:53:28 +0800 Subject: [PATCH] Fix bug in query builder that stopped multiple where clauses being run on the same column. --- DataAccess/Queries/QueryBuilder.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DataAccess/Queries/QueryBuilder.php b/DataAccess/Queries/QueryBuilder.php index c093568..56a82dc 100644 --- a/DataAccess/Queries/QueryBuilder.php +++ b/DataAccess/Queries/QueryBuilder.php @@ -28,7 +28,7 @@ class QueryBuilder implements IQueryBuilder public function where($columnName, $operator, $value) { - $this->_whereClauses[$columnName] = array('operator' => $operator, 'value' => $value); + $this->_whereClauses[] = array('columnName' => $columnName, 'operator' => $operator, 'value' => $value); return $this; } @@ -70,18 +70,18 @@ class QueryBuilder implements IQueryBuilder { $this->_queryString .= ' WHERE '; - foreach($this->_whereClauses as $columnName => $columnValue) + foreach($this->_whereClauses as $whereClause) { - switch(gettype($columnValue['value'])) + switch(gettype($whereClause['value'])) { case 'integer': - $this->_queryString .= sprintf("%s%s%u", $columnName, $columnValue['operator'], $columnValue['value']) . ' AND '; + $this->_queryString .= sprintf("%s%s%u", $whereClause['columnName'], $whereClause['operator'], $whereClause['value']) . ' AND '; break; case 'string': - $this->_queryString .= sprintf("%s %s '%s'", $columnName, $columnValue['operator'], $columnValue['value']) . ' AND '; + $this->_queryString .= sprintf("%s %s '%s'", $whereClause['columnName'], $whereClause['operator'], $whereClause['value']) . ' AND '; break; case 'NULL': - $this->_queryString .= sprintf("%s is null", $columnName) . ' AND '; + $this->_queryString .= sprintf("%s is null", $whereClause['columnName']) . ' AND '; break; } -- 2.11.0