Yo suelo usar mysql_real_escape_string($texto) o a veces
htmlspecialchars(stripslashes(strip_tags($texto))) No se qual es mejor.
Código PHP:
$query = sprintf("SELECT * FROM libros WHERE autor='%s'",
mysql_real_escape_string($autor_nombre));
mysql_query($query);
Pero es muy buena idea sustituir los carácteres que dices, aunque habría que incluir los paréntesis para más seguridad.