Как вы избегаете строк при записи данных миграции в Phinx?

В моей миграции есть несколько простых обновлений со строками, которые могут содержать специальные символы. Например:

$this->execute("UPDATE `setting` SET `classname` = 'org\foo\Bar' WHERE `id` = 1 ");

Проблема с этим, например, org\foo\Bar при вставке в MySQL лечит \ как побег персонажей. Для каждой БД phinx поддерживает, я уверен, что есть специальные символы, которые должны быть обработаны в строках, которые при использовании PDO непосредственно вы можете обойти, используя подготовленные операторы и параметры привязки.

Есть ли какой-то родной путь в phinx чтобы избежать строк или мне нужно отступить на что-то вроде PDO::quote()?

4

Решение

Как упоминается в комментариях OP Шарлотты, не похоже, что эта функция существует. Обходной путь следующий:

  1. Захватить соединение PDO
  2. Использовать 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 ");
}
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]