diff options
| -rw-r--r-- | it_dbi.class | 3 | ||||
| -rwxr-xr-x | tests/it_dbi.t | 12 | 
2 files changed, 15 insertions, 0 deletions
| diff --git a/it_dbi.class b/it_dbi.class index 0457142..14899d2 100644 --- a/it_dbi.class +++ b/it_dbi.class @@ -651,6 +651,7 @@ function replace($tags = array())   * Update current record or a number of records given by where condition   * @param $tags key => value pairs (these have priority over changes in member vars)   * @param $where condition to select records to be modified (if not current record) + * @return number of updated records (or false on error)   * Does not destroy internal state of last select() call   */  function update($tags = array(), $where = null) @@ -668,6 +669,8 @@ function update($tags = array(), $where = null)  		if ($result = $this->query("UPDATE {$this->_p['table']} $set " . $this->_where($where, $this->_link)))  		{ +			$result = mysql_affected_rows($this->_link); +  			if (array_key_exists($this->_p['keyfield'], $tags))	# Did we just update the key?  				$this->_key = $tags[$this->_p['keyfield']]; diff --git a/tests/it_dbi.t b/tests/it_dbi.t index 3428c0f..3ee2562 100755 --- a/tests/it_dbi.t +++ b/tests/it_dbi.t @@ -132,6 +132,18 @@ is(  	"update"  ); +is( +	$record->update(array('x' => 18), array('x' => 17)), +	1, +	"return affected rows", +); + +is( +	$record->update(array('x' => 18), array('x' => 17)), +	0, +	"return zero affected rows", +); +  $record->update(array('-x' => 'RAND() * 10'));  isnt(  	array($record->_key, $record->x, $record->foo), |