2013-06-05 4 views
0

Je suis en train d'écrire une requête de mise à jour comme celui-ci:Mettre à jour la requête dans MYSQL?

Update entryTable set type='String' Where ID='Entry_001' or SecondID='Entry_002' or ThirdID="Entry_003" or BackupID="Entry_004" 

Mais ce qu'il fait est, il met à jour ma table si elle trouve l'un des ID paramètre i.e. ci-dessus, SecondID, ThirdID, BACKUPID.

Mais je dois écrire une requête de mise à jour où l'utilisateur peut passer n'importe quel paramètre et je dois filtrer basé sur les paramètres passés par l'utilisateur, ie l'utilisateur peut passer seulement ID ou il peut passer passer SecondID ou ThirdID ou tout ou Il peut passer seulement BackupID et ainsi de suite. Fondamentalement je veux écrire une requête de mise à jour qui acceptera n'importe quel paramètre et mettre à jour basé sur ces paramètres. J'espère que vous avez compris ma question. Merci d'avance.

+0

Et où est le code du langage côté serveur qui exécute cette requête –

Répondre

2

Vous devriez essayer de composer votre requête plus attentivement au lieu de toujours ajouter toutes les conditions. La langue ou le cadre que vous utilisez pour obtenir cette requête n'est pas clair, donc je ne peux pas vous donner de conseils spécifiques.

Le résultat est que vous devriez commencer par ceci:

UPDATE entryTable SET type='String' WHERE 

alors vous append conditions un par un. Il est souvent préférable d'ajouter à un tableau, puis rejoindre le tableau avec « OR » ou « ET » au besoin:

[ [ "ID=?", "Entry_001" ], [ "SecondID=?", "Entry_002" ] ] 

qui serait transformé en:

[ "UPDATE entryTable SET type='String' WHERE ID=? OR SecondID=?", "Entry_001", "Entry_002" ] 

Ensuite, vous utiliseriez la fonctionnalité d'échappement de votre bibliothèque de base de données pour lier les espaces réservés et les valeurs ensemble.

Vous pouvez essayer de chercher le dossier avant d'émettre aveuglément une mise à jour aussi, puis mise à jour en fonction de votre clé primaire seul:

SELECT ID FROM entryTable WHERE ID='Entry_001' ... 

Ensuite, si cela retourne un seul enregistrement, effectuez une mise à jour:

UPDATE entryTable SET type='String' WHERE ID=? 

S'il renvoie plusieurs enregistrements, vous demanderiez à l'utilisateur de mieux définir sa recherche.

Questions connexes