¿Cómo puedo usar ON DUPLICATE KEY UPDATE en PDO con mysql?

DETALLES

Estoy haciendo una única inserción para la expiración de una licencia nueva o renovada. El período de tiempo para el vencimiento es de 2 años a partir de la fecha de inserción. Si se detecta un duplicado, la entrada se actualizará de tal manera queEl vencimiento es igual al vencimiento restante más 2 años.

Con respecto a los duplicados, en el siguiente ejemplo, solo debe haber una fila que contenga user_id = 55 y license = commercial.

MESA: licence_expiry

--------------------------------------------------------
|   user_id   |   licence   |           expiry         |  
--------------------------------------------------------
|     55      |  commercial |     2013-07-04 05:13:48  |  
---------------------------------------------------------

id_usuario (int11), licencia (varchan50), caducidad (DATETIME)

Creo que en mysql lo escribirías de esta forma (ten en cuenta que no he comprobado si el código funciona en mysql).

INSERT INTO `licence_expiry`
(`user_id`, `licence`, `expiry`)
VALUES
(55, commercial, NOW()+ INTERVAL 2 YEAR)
ON DUPLICATE KEY UPDATE
`expiry` = `expiry` + INTERVAL 2 YEAR

PREGUNTA: ¿Cómo puedo hacer esto con DOP? He escrito un resumen de lo que creo que usaré, pero no estoy seguro de qué escribir para el valor de vencimiento para elEn actualización clave duplicada.

$sql = "INSERT INTO $table (user_id, licence, expiry)
                        VALUES (
                        :user_id,  
                        :licence,
                        :expiry)
    ON DUPLICATE KEY UPDATE expiry = Something"; 


try {
    $dbh = new PDO('login info here');
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(':user_id', $userID, PDO::PARAM_INT);     
    $stmt->bindParam(':licence',$licence, PDO::PARAM_STR);
    $stmt->bindParam(':expiry',$expiry, PDO::PARAM_STR);                            
    $stmt->execute();
    //$stmt->closeCursor(); //use this instead of $dbh = null   if you will continue with another DB function
    $dbh = null; 
    }

    catch(PDOException $e)
    {
    $error=$e->getMessage();        
    }

Cualquier ayuda es muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta