si haces un
echo $cmdSQL ;
antes de tu mysql_query() .. que ves? las comillas escapadas? .. Te lo comento por qué PHP por defecto añade el escape a las comillas y otros caracteres según el estado de magic_quotes_gpc (php.ini).
Si dices que en tu HTML generado tienes comillas .. tendras que por lo menos ahí mismo hacer un addslashes()
Código PHP:
<input name="zbiografia" type="hidden" id="zbiografia" value="<? echo addslashes($HTTP_POST_VARS["biografia"]); ?>">
para que no suceda esto.
Código PHP:
<input name="zbiografia" type="hidden" id="zbiografia" value="esto tiene comillas "comillas" y mas cosas">
Hay que conseguir que las comillas dombles (para ese caso) se escapen (con la función mencionada PHP lo hace) y quede:
Código PHP:
<input name="zbiografia" type="hidden" id="zbiografia" value="esto tiene comillas \"comillas\" y mas cosas">
A su vez en tu BD guadarías tus textos con escape de comillas y caracteres vários. Pero al volver (en tu caso) aplicar un addslashses() se duplicaran los \\" ..
Por lo demás .. NO mezcles $_POST con $HTTP_POST_VARS .. o usa un método o el otro pero no ambos a la vez. (recomendable $_POST como arrays superglobales).
Mira en tu phpinfo() el estado de la directiva magic_quote_gpc (por defecto suele ser "ON").
Un saludo,