pero cuando le doy actualizar en el formulario, si no cargo ninguna imagen se me borra
es obvio, se te borra porque te actualiza ( te hace el UPDATE ) de una imagen que NO EXISTE, entendes?
`imagen`='$file_name
ahi supongo que imagen hace referencia a esa ruta de la imagen que decis vos, entonces como $file_name es esto: $file_name = $randomizer.$userfile;
y $userfile es esto: $userfile = $_FILES['userfile']['name']; entonces si no te llega nada siempre te va a actualizar lo que tengas en la tabla por VACÍO ( NADA ) , tenes que validar que se adjunte la imagen, hacelo con javascript, y también hacelo con php validando si existe o no la variable name que pertenece al array $_POST, con isset,
Con eso si no existe la variable userfile, o sea si no se adjunto ninguna imagen, se te redirecciona a ese archivo php que sube la imagen, de lo contrario, o sea si se adjunta entonces haces la consulta UPDATE