diff --git a/lib/db.php b/lib/db.php
index a93b9eccbdf90203a8aeed02131d43b79ac55628..6fec60e53ce85d3c364419a0d745550acbd81ead 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -681,7 +681,7 @@ class OC_DB {
 	 * @brief Insert a row if a matching row doesn't exists.
 	 * @param string $table. The table to insert into in the form '*PREFIX*tableName'
 	 * @param array $input. An array of fieldname/value pairs
-	 * @returns The return value from PDOStatementWrapper->execute()
+	 * @returns int number of updated rows
 	 */
 	public static function insertIfNotExist($table, $input) {
 		self::connect();
@@ -715,7 +715,7 @@ class OC_DB {
 					. implode('`,`', array_keys($input)) . '`) VALUES('
 					. str_repeat('?,', count($input)-1).'? ' . ')';
 			} else {
-				return true;
+				return 0; //no rows updated
 			}
 		} elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql' || $type == 'mssql') {
 			$query = 'INSERT INTO `' .$table . '` (`'
@@ -736,9 +736,6 @@ class OC_DB {
 		} catch(PDOException $e) {
 			OC_Template::printExceptionErrorPage( $e );
 		}
-		if ($result === 0) {
-			return true;
-		}
 
 		return $result;
 	}
@@ -1036,7 +1033,7 @@ class PDOStatementWrapper{
 	}
 
 	/**
-	 * make execute return the result instead of a bool
+	 * make execute return the result or updated row count instead of a bool
 	 */
 	public function execute($input=array()) {
 		if(OC_Config::getValue( "log_query", false)) {
diff --git a/tests/lib/db.php b/tests/lib/db.php
index 0ba7d5d4b0609c6ac1cbd8baccafd2f5707c08de..69e3542f9263f4a29cdf2b309cdb014fb6089464 100644
--- a/tests/lib/db.php
+++ b/tests/lib/db.php
@@ -40,7 +40,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 		$this->assertFalse((bool)$row); //PDO returns false, MDB2 returns null
 		$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (?,?)');
 		$result = $query->execute(array('fullname test', 'uri_1'));
-		$this->assertEquals('1', $result);
+		$this->assertEquals(1, $result);
 		$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
 		$result = $query->execute(array('uri_1'));
 		$this->assertTrue((bool)$result);
@@ -57,7 +57,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 	public function testNOW() {
 		$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (NOW(),?)');
 		$result = $query->execute(array('uri_2'));
-		$this->assertEquals('1', $result);
+		$this->assertEquals(1, $result);
 		$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
 		$result = $query->execute(array('uri_2'));
 		$this->assertTrue((bool)$result);
@@ -66,7 +66,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 	public function testUNIX_TIMESTAMP() {
 		$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (UNIX_TIMESTAMP(),?)');
 		$result = $query->execute(array('uri_3'));
-		$this->assertEquals('1', $result);
+		$this->assertEquals(1, $result);
 		$query = OC_DB::prepare('SELECT `fullname`,`uri` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
 		$result = $query->execute(array('uri_3'));
 		$this->assertTrue((bool)$result);
@@ -74,11 +74,11 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 
 	public function testinsertIfNotExist() {
 		$categoryentries = array(
-				array('user' => 'test', 'type' => 'contact', 'category' => 'Family'),
-				array('user' => 'test', 'type' => 'contact', 'category' => 'Friends'),
-				array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'),
-				array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers'),
-				array('user' => 'test', 'type' => 'contact', 'category' => 'School'),
+				array('user' => 'test', 'type' => 'contact', 'category' => 'Family',    'expectedResult' => 1),
+				array('user' => 'test', 'type' => 'contact', 'category' => 'Friends',   'expectedResult' => 1),
+				array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers', 'expectedResult' => 1),
+				array('user' => 'test', 'type' => 'contact', 'category' => 'Coworkers', 'expectedResult' => 0),
+				array('user' => 'test', 'type' => 'contact', 'category' => 'School',    'expectedResult' => 1),
 			);
 
 		foreach($categoryentries as $entry) {
@@ -88,13 +88,13 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 					'type' => $entry['type'],
 					'category' => $entry['category'],
 				));
-			$this->assertTrue((bool)$result);
+			$this->assertEquals($entry['expectedResult'], $result);
 		}
 
 		$query = OC_DB::prepare('SELECT * FROM `*PREFIX*'.$this->table3.'`');
 		$result = $query->execute();
 		$this->assertTrue((bool)$result);
-		$this->assertEquals('4', $result->numRows());
+		$this->assertEquals(4, $result->numRows());
 	}
 
 	public function testinsertIfNotExistDontOverwrite() {
@@ -105,14 +105,14 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 		// Normal test to have same known data inserted.
 		$query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`, `uri`, `carddata`) VALUES (?, ?, ?)');
 		$result = $query->execute(array($fullname, $uri, $carddata));
-		$this->assertEquals('1', $result);
+		$this->assertEquals(1, $result);
 		$query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
 		$result = $query->execute(array($uri));
 		$this->assertTrue((bool)$result);
 		$row = $result->fetchRow();
 		$this->assertArrayHasKey('carddata', $row);
 		$this->assertEquals($carddata, $row['carddata']);
-		$this->assertEquals('1', $result->numRows());
+		$this->assertEquals(1, $result->numRows());
 
 		// Try to insert a new row
 		$result = OC_DB::insertIfNotExist('*PREFIX*'.$this->table2,
@@ -120,7 +120,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 				'fullname' => $fullname,
 				'uri' => $uri,
 			));
-		$this->assertTrue((bool)$result);
+		$this->assertEquals(0, $result);
 
 		$query = OC_DB::prepare('SELECT `fullname`, `uri`, `carddata` FROM `*PREFIX*'.$this->table2.'` WHERE `uri` = ?');
 		$result = $query->execute(array($uri));
@@ -130,7 +130,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
 		// Test that previously inserted data isn't overwritten
 		$this->assertEquals($carddata, $row['carddata']);
 		// And that a new row hasn't been inserted.
-		$this->assertEquals('1', $result->numRows());
+		$this->assertEquals(1, $result->numRows());
 
 	}
 }