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
Vous devez vous connecter pour publier un commentaire.
Comment REMPLACER DANS:
En supposant col1 est votre clé primaire, si une ligne avec la valeur "toto" existe déjà, il mettra à jour les deux autres colonnes. Sinon, il va insérer une nouvelle ligne.
vous pouvez essayer d'utiliser" INSERT ... SUR le DOUBLE de la CLÉ de mise à JOUR" de la syntaxe
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Vous avez seulement besoin de mettre à jour col3 sur dupliquer. C'est exactement ce que vous demandez.
Pour MySQL 5.0 + utilisation :
INSERT ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html