rarisimo, por lo menos al hacer el echo $query tendria que salir UPDATE links SET nombre = .... algo tendria que salir.
a ver:
ejecuta esto:  
 Código PHP:
    
<? if (isset($_REQUEST['enviar'])) { 
var_dump($_POST);
require_once('../vars.php');
$_REQUEST['descripcion'] = str_replace("\"", """, $_REQUEST['descripcion']);
$_REQUEST['descripcion'] = str_replace('\'', '&%2339;', $_REQUEST['descripcion']);
$query = "UPDATE links SET nombre = '$_POST[nombre]', descripcion = '$_POST[descripcion]', categoria = '$_POST[categoria]', archivo = '$_POST[archivo]', enlace = '$_POST[enlace]' WHERE links.id='$_POST[id]'";
echo $query;
/*
mysql_query ($query)
    or die('Invalid query: ' . mysql_error());
    mysql_query ("$query")
    or die('Invalid query: ' . mysql_error()); ?>
          Link editado
*/          
              <? 
} 
else
 {
require_once('../vars.php');
$datoslinks = mysql_query("SELECT * FROM links WHERE links.id='$_REQUEST[id]'"); 
  while ($link = mysql_fetch_array($datoslinks)) {
?>    
  con eso conseguimos ver que trae la variable $_POST y que sale en el echo $query. 
Mostra la salida del navedor por favor. 
Edito porque no lei antes lo q puso KrowMx, es cierto quizas no esta entrando al if, proba sacar el $_REQUEST por $_POST o hace un var_dump($_POST) antes del if para que datos esta trayendo. 
Nos contas que paso.