public function p($sql)
{
+ $this->profiler->startRecording('database');
$stamp1 = microtime(true);
$params = DBA::getParam(func_get_args());
$this->errorno = $errorno;
}
- $this->profiler->saveTimestamp($stamp1, 'database');
+ $this->profiler->stopRecording();
if ($this->configCache->get('system', 'db_log')) {
$stamp2 = microtime(true);
public function e($sql)
{
- $stamp = microtime(true);
+ $this->profiler->startRecording('database_write');
$params = DBA::getParam(func_get_args());
$this->errorno = $errorno;
}
- $this->profiler->saveTimestamp($stamp, "database_write");
+ $this->profiler->stopRecording();
return $retval;
}
*/
public function fetch($stmt)
{
- $stamp1 = microtime(true);
+ $this->profiler->startRecording('database');
$columns = [];
}
}
- $this->profiler->saveTimestamp($stamp1, 'database');
+ $this->profiler->stopRecording();
return $columns;
}
* @param string|array $table Table name or array [schema => table]
* @param array $fields contains the fields that are updated
* @param array $condition condition array with the key values
- * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate)
+ * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate, false = don't update identical fields)
*
* @return boolean was the update successfull?
* @throws \Exception
$row = $this->fetchFirst($sql, $condition);
- // Ensure to always return either a "null" or a numeric value
- return is_numeric($row['count']) ? (int)$row['count'] : $row['count'];
+ if (!isset($row['count'])) {
+ $this->logger->notice('Invalid count.', ['table' => $table, 'row' => $row, 'expression' => $expression, 'condition' => $condition_string, 'callstack' => System::callstack()]);
+ return 0;
+ } else {
+ return (int)$row['count'];
+ }
}
/**
public function close($stmt)
{
- $stamp1 = microtime(true);
+ $this->profiler->startRecording('database');
if (!is_object($stmt)) {
return false;
break;
}
- $this->profiler->saveTimestamp($stamp1, 'database');
+ $this->profiler->stopRecording();
return $ret;
}