J'essaie de créer une requête SQL en PHP pour mettre à jour une table.
Est-il possible d'avoir un Par exemple, quelque chose comme: p> etc? P> < p> Toute aide appréciée. Merci p> p> différent où code> clause de chaque ligne affectée?
5 Réponses :
Nope. Faites-le deux mises à jour: à la deuxième pensée, vous pouvez utiliser des sous-requêtes ou la déclaration de cas ... p> vous pouvez Besoin de faire une sous-requête comme celle-ci: p>
Vous ne pouvez pas avoir plusieurs clauses pour une instruction SQL, mais vous pouvez utiliser une déclaration de cas pour accomplir ce que vous essayez de faire. Une autre option que vous avez est d'exécuter plusieurs instructions de mise à jour.
Voici un échantillon utilisant l'instruction Case: p> Voici un échantillon utilisant plusieurs instructions de mise à jour: p>
Oui, vous pouvez avec une déclaration de cas.
UPDATE table SET val = CASE MOD(someproperty, 2) WHEN 0 THEN x WHEN 1 THEN y END
Ceci est techniquement précis et répond à votre question. Cependant, vous voudrez peut-être envisager une capacité de lecture et de soutien lorsque vous décidez de la pratique de codage à utiliser. Je recommande de rompre dans de multiples déclarations d'insertion, car d'autres ont noté à moins d'une question de performance que vous essayez de résoudre.
Les gens semblent avoir peur de la mort des déclarations de cas ou d'autres fonctions de base de données respectueuses de l'ANSI pour une raison quelconque. Il s'agit de la troisième ou de la quatrième fois aujourd'hui que quelqu'un a cité le facteur de lisibilité. La concision fait aussi pour la lisibilité et en fonction de la nature de la mise à jour, une seule instruction peut être plus lisible avec un commutateur plutôt que sur plusieurs états de mise à jour. Cela dépend vraiment du problème et de l'expérience de ceux qui maintiennent sa solution.
@Jay: J'ai ajouté à ce nombre de cas où une seule déclaration de cas peut être préférable.
UPDATE TABLE SET VAL CASE SOMEPROPERTY WHEN 1 THEN X WHEN 2 THEN Y END
une manière compacte et facilement évolutive: Faites de la requête de cette façon: p> Utilisez préparer_query pour éviter les erreurs SQL Syntaxe si Vous traitez des valeurs de chaîne. P> p>
Quoi qu'il en soit, utilisez la mise à jour de 1 requête au lieu de plusieurs comme dans la réponse que vous avez choisie.