No se como lo eh echo pero ah funcionado este metodo sinceramente no me explico que ise ahora para que saliera bien , me parece igual , es muy extraño esto muestro como me funciono espero me lo expliquen asi por der evitar estos casos...
Código PHP:
$mes= date(n);
$vence =$result['caduca'] + 3;
echo "<h1 style='color:red'>Mes es : ".$mes." <h1>";
echo "<h1 style='color:red'>Cad : ".$vence." <h1>";
echo "<h1 style='color:red'>id : ".$result['id_sql']." <h1>";
if(vence == $mes) {
mysql_query("UPDATE tabla SET caduca='si lo soy' WHERE id_sql=".$result['id_sql']." ; ",$link) or die ("Error al modificar registro ");
echo "<h1 style='color:red'>Si actualizado <h1>";
}else{
echo "<h1 style='color:red'>No actualizado <h1>";
}
// ahora bien esto puede funcionar corretamente para 1 pero ya te digo lo mejor seria comprobarlos todos por eso se me ocurrio lo del while pero tiene problemas con la suma dentro del while .