При вставке в базу данных, например, MySQL, важно использовать подготовленные операторы со значениями-заполнителями .Я выделил это жирным шрифтом, потому что это очень важно понимать.Все, что для этого нужно, - это маленький пробел, и вы создали дыру для SQL-инъекции , которую может использовать каждый, и это может быть чрезвычайно вредно.
Выход из строки может показаться поверхностно простым, но это не так.Есть много причудливых крайних случаев, которые вам нужно охватить, детали которых слишком сложны, чтобы упоминать их здесь в кратком ответе.
Простое решение состоит в том, чтобы вообще не беспокоиться о побеге, а писать запросыэтой формы:
INSERT INTO table_name (column_name) VALUES (?)
Где ?
представляет данные, которые вы вставляете.Вы можете использовать их, например, с драйвером mysql2
следующим образом:
stmt = @client.prepare("INSERT INTO table_name (column_name) VALUES (?)")
stmt.execute("Henry's string")
Где этот драйвер позаботится о правильном кодировании значений, чтобы вам не пришлосьбеспокоиться об этом.
Вы также можете использовать что-то вроде Sequel или ActiveRecord , которые еще больше упростят ситуацию.