Added support for the "replace" database command

This commit is contained in:
Michael 2020-08-26 20:16:57 +00:00
parent 4841ac7dc5
commit 212e06b87b
2 changed files with 41 additions and 0 deletions

View file

@ -292,6 +292,20 @@ class DBA
return DI::dba()->insert($table, $param, $on_duplicate_update);
}
/**
* Replace a row of a table
*
* @param string|array $table Table name or array [schema => table]
* @param array $param parameter array
*
* @return boolean was the insert successful?
* @throws \Exception
*/
public static function replace($table, $param)
{
return DI::dba()->replace($table, $param);
}
/**
* Fetch the id of the last insert command
*

View file

@ -1006,6 +1006,33 @@ class Database
return $this->e($sql, $param);
}
/**
* Replace a row of a table
*
* @param string|array $table Table name or array [schema => table]
* @param array $param parameter array
*
* @return boolean was the insert successful?
* @throws \Exception
*/
public function replace($table, array $param)
{
if (empty($table) || empty($param)) {
$this->logger->info('Table and fields have to be set');
return false;
}
$table_string = DBA::buildTableString($table);
$fields_string = implode(', ', array_map([DBA::class, 'quoteIdentifier'], array_keys($param)));
$values_string = substr(str_repeat("?, ", count($param)), 0, -2);
$sql = "REPLACE " . $table_string . " (" . $fields_string . ") VALUES (" . $values_string . ")";
return $this->e($sql, $param);
}
/**
* Fetch the id of the last insert command
*