В моей миграции есть несколько простых обновлений со строками, которые могут содержать специальные символы. Например:
$this->execute("UPDATE `setting` SET `classname` = 'org\foo\Bar' WHERE `id` = 1 ");
Проблема с этим, например, org\foo\Bar
при вставке в MySQL лечит \
как побег персонажей. Для каждой БД phinx
поддерживает, я уверен, что есть специальные символы, которые должны быть обработаны в строках, которые при использовании PDO
непосредственно вы можете обойти, используя подготовленные операторы и параметры привязки.
Есть ли какой-то родной путь в phinx
чтобы избежать строк или мне нужно отступить на что-то вроде PDO::quote()
?
Как упоминается в комментариях OP Шарлотты, не похоже, что эта функция существует. Обходной путь следующий:
quote()
или вручную построить запрос, используя соединение напрямуюВот мой пример кода с использованием quote()
public function change()
{
$conn = $this->getAdapter()->getConnection();
$quotedString = $conn->quote('org\foo\Bar');
$this->execute("UPDATE `setting` SET `classname` = $quotedString WHERE `id` = 1 ");
}
Других решений пока нет …