Move relocation feature in its separate class
- Create Database->replaceInTableFields method
This commit is contained in:
parent
697b8a6cb8
commit
7d09ce86c4
3 changed files with 134 additions and 61 deletions
|
@ -1790,4 +1790,32 @@ class Database
|
|||
{
|
||||
array_walk($arr, [$this, 'escapeArrayCallback'], $add_quotation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces a string in the provided fields of the provided table
|
||||
*
|
||||
* @param string $table_name
|
||||
* @param array $fields List of field names in the provided table
|
||||
* @param string $search
|
||||
* @param string $replace
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function replaceInTableFields(string $table_name, array $fields, string $search, string $replace)
|
||||
{
|
||||
$search = $this->escape($search);
|
||||
$replace = $this->escape($replace);
|
||||
|
||||
$upd = [];
|
||||
foreach ($fields as $field) {
|
||||
$field = DBA::quoteIdentifier($field);
|
||||
$upd[] = "$field = REPLACE($field, '$search', '$replace')";
|
||||
}
|
||||
|
||||
$upds = implode(', ', $upd);
|
||||
|
||||
$r = $this->e(sprintf("UPDATE %s SET %s;", $table_name, $upds));
|
||||
if (!$this->isResult($r)) {
|
||||
throw new \RuntimeException("Failed updating `$table_name`: " . $this->errorMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue