Есть гораздо лучший способ, и вам не нужно будет беспокоиться о том, чтобы снова убежать от своих строк. Использование подготовленных операторов в mysqli
или PDO
сделает большие запросы (те, которые содержат много строк) намного быстрее, они безопасны, вам не нужно беспокоиться о (большинстве типов) внедрения SQL, и их легко выполнить учить. строки будут просто приняты как есть в вашей базе данных без риска нарушения вашего кода.
Вот пример с mysqli
:
$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare("INSERT INTO table (columnname) VALUES (?)");
$stmt->bind_param("s", $text);
$stmt->execute();
$stmt->close();
По сути, привязывая параметры перед входом, он просто принимает любую строку так, как вы ее создали, и не нужно ничего экранировать. '
Вот то же самое, используя PDO. По сути, это делает одно и то же, но имеет преимущество как в работе с несколькими различными типами баз данных (такими как, например, Oracle или PostgreSQL), так и в некоторой степени изящной модификации из-за связанных классов.
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO table (columname)
VALUES (:text)");
$stmt->bindParam(':text', $text);
$stmt->execute();
catch(PDOException $e)
{
echo "Oops, didn't work: " . $e->getMessage();
}
$conn = null;