Yii createCommand обновляет часть строки из нескольких записей

Изменить -

Вникнуть в это немного дальше - если вы редактируете файл ~ / .config / user-dirs.dir, вы можете удалить их с панели и по-прежнему использовать их как папки в своем / home it похоже.

0
задан 13 August 2018 в 14:46

2 ответа

Вам просто нужно заменить значения параметрами заполнителей в запросе и передать реальные значения в execute(). Единственная сложная часть - параметр для LIKE, так как % должен находиться внутри значения параметра, а не запроса:

$sql = <<<'SQL'
    UPDATE table 
    SET field = replace(field, :old_string, :value) 
    WHERE field LIKE :searchable_old_string
SQL;

Yii::app()->db->createCommand($sql)->execute([
    'old_string' => $old_string,
    'value' => $model->value,
    'searchable_old_string' => "%$old_string%",
]);
0
ответ дан 15 August 2018 в 17:02

Вы можете использовать привязку param

$query = "UPDATE table 
          SET field=replace(field, :old_string , :new_string) 
          WHERE field LIKE concat('%', :old_string2, '%')";

$command = Yii::app()->db->createCommand($query);
$command->bindParam(":old_string", $old_string, PDO::PARAM_STR);     
$command->bindParam(":new_string", $model->value, PDO::PARAM_STR);     
$command->bindParam(":old_string2", $old_string, PDO::PARAM_STR);     
$command->execute();
0
ответ дан 15 August 2018 в 17:02

Другие вопросы по тегам:

Похожие вопросы: