Máš tam logickou chybu: Pokud $_GET['id'] neexistuje, proměnné se nenaplní, ale UPDATE se provede. Bylo by možná lepší, kdyby tam ty pomocné proměnné vůbec nebyly:
<?php
if (isset($_GET['id'])) {
    try {
        $sql = "UPDATE `user` SET `title`=? ,`user`=?, `description`=?, `status`=? WHERE `id`=?;"
        $update = $dbh->prepare($sql);
        $update->execute(array(
            $_GET['title'],
            $_GET['url'],
            $_GET['description'],
            $_GET['status'],
            $_GET['id'],
        ));
    } catch ...