MySql: si la valeur existe UPDATE else INSERT

J'ai un code qui ressemble à ceci. Il y a également un champ autoincrement dans le tableau que je dois retenir (il est utilisé dans d'autres tableaux). Je tiens à simplifier et à optimiser ce code.

$query ="SELECT * FROM models WHERE col1 = 'foo'";
$testResult = mysql_query($query) or die('Error, query failed');    

if(mysql_fetch_array($testResult) == NULL){
    //insert...
    $query ="INSERT INTO models (col1, col2, col3)
    VALUES ('foo', 'bar', 'alph')";
    $result = mysql_query($query) or die('Error, query failed');
}else{
    //update...
    $query = "UPDATE models
        SET col1='foo', col2='bar', col3='alph'
        WHERE col1='foo' AND col2='bar'";
        $result = mysql_query($query) or die('Error, query failed');        
}

Edit: L'id de clé primaire est le champ qui est auto incrémenté. Je ne veux plus jamais à rien. Toutefois , lorsqu'un autre domaine(s) est/sont dupliqués, c'est quand je veux mettre à jour cet enregistrement.

source d'informationauteur John R | 2012-04-10