Corrigir o método PHP para armazenar caracteres especiais no banco de dados MySQL

Usando PHP, qual é a melhor maneira de armazenar caracteres especiais (como o seguinte) em um banco de dados MSQUL, para evitar injeções.

<code>« " ' é à ù
</code>

É assim que eu faço agora:

<code>$book_text=$_POST['book_text'];
$book_text=htmlentities($book_text, "ENT_QUOTES");
$query=//DB query to insert the text
</code>

Então:

<code>$query=//DB query to select the text
$fetch=//The fetch of $book_text
$book_text=html_entity_decode($book_text);
</code>

Desta forma, todo o meu texto é formatado em entidades HTML. Mas acho que isso ocupa muito espaço no banco de dados. Então, há uma maneira melhor?

questionAnswers(4)

yourAnswerToTheQuestion