Grazie ad entrambi per l'aiuto 
Ho provato con
Codice PHP:
committente='".mysql_real_escape_string($_POST['committente'])."'
e ottengo lo stesso problema che ottenevo con
Codice PHP:
committente=addslashes($_POST[committente]);
riesco a scrivere sul DB (pur ottenendo l'errore "NULL") se richiamo tutto il DB su un form tabellare, va ancora bene, riesco a leggere la stringa con l'apostrofo:
Codice PHP:
....
echo "<td ><a href='dettagli_progetto.php?codp=".$row['codice_progetto']."&annor=".$row['anno_rif']."&commit=".$row['committente']."&dinc=".$row['data_incarico']."&dcons=".$row['data_consegna']."&dettp=".$row['dettaglio_progetto']."'>". $row['codice_progetto'] . "</td>";
echo "<td style='width:150px; padding:0; margin:0; text-align:left;'><div style='width:170px; height:50px; overflow-x:hidden; overflow-y:auto;'>". $row['committente'] . "</td>";
echo "<td>" . data_it($row['data_incarico']) . "</td>";
...
Come vedete il primo campo del mio DB è un link, cliccandoci, tutti i campi della tabella vengono riportati su un nuovo form per la modifica attraverso l'istruzione
Codice PHP:
...
<div><label>Committente</label> <input type="text" size="52" name="committente" value="<?php echo $_GET['commit']; ?>"></div>
...
e in questo modo riesco a popolare tutti i campi fino a quello che contiene la stringa con l'apostrofo, quest'ultimo campo fino alla lettera che precede l'apostrofo, proprio come se lo interpretasse come carattere di fine stringa.