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 ...