Вопрос: Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

Лучший ответ:
HTML никак специально экранировать не нужно. И вообще ничего экранировать не нужно.  Экранирование - это треш, угар, прошлый век и инъекции. Данные в БД надо просто посылать отдельно от запроса. 

Удивительно, что на этот вопрос подписалось ещё столько народу.
Ну это я не знаю - как подписаться на вопрос "сколько будет шестью шесть?". Не "дважды два", но близко. 
Работа с БД - это самые основы пхп, которые обсосаны в каждом учебнике со всех сторон. Неужели всё так плохо, что этот вопрос вызывает столь живой интерес, чтобы попасть в список интересных на тостере?

Причем твоя лично проблема здесь совсем не в том, "как экранировать". HTML никак особо экранировать не нужно, базе данных абсолютно всё равно, что ты внее вставляешь. Твоя проблема в том, что ты в принципе не знаешь пхп и путаешься в основах языка, используешь устаревшую версию, которая не будет работать на живом сайте. И даже самый базовый синтаксис тебя пугает. Поэтому извини, я буду писать ответ не для тебя, а для тех, кто, в который раз, задается этим вечнозеленым вопросом, но по какой-то причине не смог освоить базовые навыки работы с гуглем/яндексом. 

Чтобы вставить данные в mysql, и вообще никогда не думать ни про какое "экранирование", надо
1. Все переменные в запросе заменить на знаки вопроса
2. Подготовить запрос к исполнению
3. Привязать переменные к знакам вопроса
4. Выполнить запрос.

Как я уже говорил, функций, которые начинаются на mysql, в языке давно нет. Остаются только те, которые начинаются на mysqli и PDO. Вот для них я и приведу примеры.

mysqli
$type = 'testing';
$reporter = "John O'Hara";
$query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменем
$stmt = $mysqli->prepare($query); // подготавливаем
$stmt->bind_param("ss", $type, $reporter); // привязываем
$stmt->execute(); // исполняем
Важно! Чтобы этот код работал, сначала надо правильно установить соединение mysqli 
PDO
$type = 'testing';
$reporter = "John O'Hara";
$query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменяем
$stmt = $pdo->prepare($query); // подготавливаем
$stmt->execute([$type, $reporter]); // привязываем и исполняем
Важно! Чтобы этот код работал, сначала надо правильно установить соединение PDO

Также можно использовать сторонние библиотеки, с которыми все еще проще. Но использование сторонних библиотек почему-то пугат новичков хуже чем зомби на кладбище в безлунную ночь, поэтому настаивать не буду

Худший ответ:
Никита Гуриев, сделайте 
$sql = "INSERT INTO `ваша_таблица`  data='".mysql_real_escape_string($data)."' WHERE ваше условие вставки";
всё должно вставиться. Имя поля и имя таблицы поставьте ваши, $data из каммента Александра выше(полученные через Heredoc).

Без Heredoc у вас не работало, потому, что вы строку брали в двойные кавычки ", и внутри неё использовали " без экранирования в:
"src": '$NewFileDir',
и переносы строк внутри "  " могли отрабатываться неправильно.

Есть железобетонный вариант вставить всё что угодно (если размера поля БД хватит):
$sql = "INSERT INTO `ваша_таблица`  data='".base64_encode( gzcompress($data) )."'";
а когда достаёте из БД - надо распаковать обратно:
$data = gzuncompress( base64_decode( $row['data' ] ) );
Из минусов:
 - доп нагрузка на запаковку-распаковку, но для вашей строки это ерунда. base64_encode() увеличивает размер данных примерно в 1.5 раза, но zip жмёт сильнее.

Из плюсов:
- SQL-инъекции отсутствуют как класс
- ничего не надо экранировать.
- кодировка данных - по барабану, вставится даже UTF8-данные в таблицу cp1251. Главное, потом их отдать в правильной кодировке (когда вытащите из таблицы и будете отправлять в браузер)