2009-08-20 9 views
3

Je suis en train de faire une demande UPDATE/INSERT, mais voici l'essentiel:MySQL - Different instruction UPDATE autre INSERT

table PLAYERS { 
    player_id 
    game_id 
    team_id 
    position 
    number 
} 

Ce qui est censé se passer est le suivant:

I tester si le est une entrée où player_id = '$player_id' AND game_id = '$game_id' AND team_id = '$team_id'.

S'il y a, alors ce qui suit se produit:

position = '$position' AND number = '$number'

Est-il possible que je peux le faire en utilisant simplement la langue de requêtes MySQL, sans besoin de validation PHP entre les requêtes?

+0

Je n'ai pas une clé primaire de cette table, mais les index sur les game_id, player_id , et team_id, si cela vous aide ... –

+0

Vous pouvez créer une clé primaire composée dans les champs de jeu, de joueur et d'équipe. –

Répondre

0

Eh bien, j'ai corrigé cela avec plusieurs instructions IF pour déterminer s'il fallait insérer ou mettre à jour.

6
INSERT INTO TABLE (COLUMNS) VALUES(FIELDS) UPDATE ON DUPLICATE KEY position = somevalue, number=number 

1) tente d'insérer
2) S'il y a un enregistrement avec un champ unique (clé primaire, index unique, etc.) mettre à jour ce champ à la place.

+0

Voici ma requête: 'INSERT INTO joueurs (game_id, player_id, position, nombre) VALEURS ('$ game_id', '$ players [$ i]', '$ position [$ i]', '$ nombre') UPDATE SUR DUPLICATE KEY position = '$ position [$ i]', number = '$ number'' Mais j'obtiens l'erreur suivante: 'Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'UPDATE ON DUPLICATE KEY position =' LH Prop ', numéro =' 1 '' à la ligne 1' Des idées? –

+1

Oui, vous avez des erreurs. Vous entrez des nombres en tant que chaînes :) – Havenard

+0

J'ai inséré comme ceci tout le temps, et cela a fonctionné. –

0

Cela ne fonctionnera pas à moins que son dans une transaction, ou vous pouvez garantir que les demandes simultanées contre la DB ne sera pas exécuté

Questions connexes