Si es un str, podes usar addslaseh para comparaciones:
$query = "SELECT * FROM tabla WHERE nombre = '" . addslashes($nombre) . "' ORDER BY nombre";
O un str_replace de de la comilla tambien te seviria. Pero como tenes varios caracteres "jodidos", podes armarte una funcion reemplazando cada uno, de manera simple, mas o menos asi:
function limpiar($str){
$str= str_replace("'", "`", $str);
$str= str_replace("\"", "`", $str);
$str= str_replace("--", "", $str);
#Y todo el que quieras, o tambien palabras reservadas como having, group by, pero para eso tendrías que hacer una funcion input y otra de output.
return $str;
}
Despues tenes funciones propias de php para salvar las papas, como ser, stripcslashes(), stripslashes(), htmlspecialchars(), quotemeta(), y tambien propias de mysql segun la version que este usando.
Mas info
www.php.net www.mysql.com