Po prostu przekazuj argumenty do zapytania osobno (prepared statement) zamiast sklejać stringi. To jest standardowa praktyka od lat :)
Fundamentalnym źródłem wrażliwości na SQL injection są właśnie nie znaki specjalne, a sam fakt wklejania zmiennych prosto do stringa zapytania SQLowego.
Przykład z PDO (napisany na sucho):
$jakasLiczba = 150;
$jakisTekst = "jakis dlugi tekst?!:'"
$stmt = $pdo->prepare('INSERT INTO jakastablica (liczba, tekst) VALUES (?, ?)');
$stmt->execute([$jakasLiczba , $jakisTekst]);
// albo z nazwanymi argumentami:
$stmt = $pdo->prepare('INSERT INTO jakastablica (liczba, tekst) VALUES (:liczba, :tekst)');
$stmt->execute([
'liczba' => $jakasLiczba,
'tekst' => $jakisTekst
]);