Con un pò di esperienza sono arrivato a questa funzione da usare su OGNI stringa che contiene caratteri liberi prima di fare la query:


codice:
/* ### FORMATTAZIONE DATI PER DATABASE (RIMOZIONE TAG ED INSERIMENTO ESCAPE) ### */
function 	formatDbString($fStrFormData) {           

		$fStrFormData=str_replace("\\'","&#39",$fStrFormData);
		$fStrFormData=str_replace("\\\\","&#92",$fStrFormData);   
		$fStrFormData=str_replace("<","&#60",$fStrFormData);
		$fStrFormData=str_replace(">","&#62",$fStrFormData);
		$fStrFormData=str_replace("$","&#36",$fStrFormData); 

		$fStrFormData=str_replace("\\\"","&#34",$fStrFormData); 
  	                  
		return $fStrFormData;
}
come puoi vedere a volte prima del carattere da sostituire ci sono uno o più escape questo è dovuto da alcune impostazioni del tuo server web, ti consiglio di provare per trovare l'esatta configurazione che a te serve!