¿Cómo actualizar la base de datos tras una descarga exitosa?

He escrito un script de descarga que descargará un archivo desde un directorio. Luego de una descarga exitosa, necesito actualizar la base de datos para escribir el siguiente código.

<code>$path = $_SERVER['DOCUMENT_ROOT']."/upload/"; // change the path to fit your websites document structure

$fullPath = $path.$_GET['download_file'];

if ($fd = fopen ($fullPath, "r")) {
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);
    switch ($ext) {
        case "pdf":
        header("Content-type: application/pdf"); // add here more headers for diff. extensions
        header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
        break;
        default;
        header("Content-type: application/octet-stream");
        header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    }
    header("Content-length: $fsize");
    header("Cache-control: private"); //use this to open files directly
    while(!feof($fd)) {
        $buffer = fread($fd, 2048);
        echo $buffer;
    }
}
fclose ($fd);
$update = mysql_query("Update query");
if($update) {
echo "updated";
}
else {
echo 'error'.mysql_error();
}
exit;
</code>

Pero cuando hago clic en el enlace de descarga y aparece una ventana emergente del navegador en la ventana emergente, cuando hago clic en el botón de cancelar, no debería ejecutar la consulta de actualización ya que el archivo no se descarga, pero cuando uso el código anterior, incluso si hago clic en el botón cancelar la consulta de actualización ejecutada.

Entonces, ¿cuál es el error en mi código?

Respuestas a la pregunta(1)

Su respuesta a la pregunta