2011-04-20 8 views
1

Ok, j'ai un système de liste de contrôle sur lequel je travaille. Une page extrait les données de la base de données et les affiche sous forme de liste de contrôle. J'essaye de créer un bouton qui une fois poussé remettra la base de données dans un certain état que je veux. Fondamentalement, j'ai un bouton qui envoie un appel ajax à une page php qui exécute une requête UPDATE. Cette requête est la suivante:php mysql - mettre à jour plusieurs lignes dans un tableau

UPDATE $table SET value='$value', comments='$comments', editedBy='$editedBy', editedDate='$editedDate' WHERE projectId='$projectId'; 

Je définis les variables en premier, bien sûr, ce n'est pas ma question. Juste prétendre qu'ils ont des données. Ma question est de savoir comment puis-je répéter cette requête afin que chaque table de rangée x qui a un projectId de n est mis à jour? Je suppose que cela implique une boucle for?

SIDE NOTE: Étant donné que cette requête est mise juste la valeur de false et de faire les comments, editedBy et editedDate champs vides pour chaque ligne dans le tableau x qui a un projectId de n, est-il une meilleure façon de faire cela autre que la requête UPDATE?

Merci pour toute aide!

+0

Je suppose que le problème est que vous ne connaissez pas toutes les tables de lignes X a ce qui rend difficile de mettre à jour ou je me trompe? –

+1

Cette requête met à jour toutes les lignes avec l'ID de projet que vous fournissez. –

+0

merci @edem, comme vous et @Jesse l'ai dit, je vais juste essayer cette requête par elle-même. – RyanPitts

Répondre

2

Tant que vous ne divisez pas un LIMIT dans votre requête UPDATE, il mettra à jour chaque ligne qui correspond à votre clause where. Maintenant, si vous mettez à jour la table des projets et que projectID est votre clé primaire, vous devrez exécuter une boucle pour mettre à jour les autres projectID s. Si vous ne mettez pas à jour la table de projet, votre requête de mise à jour mettra à jour tout enregistrement dont la clé étrangère correspond à l'ID de projet que vous avez spécifié.

Cela aide-t-il?

+0

merci! Je pensais que ce pourrait être le cas, mais je ne voulais pas simplement lancer la requête et bousiller la base de données .. ne serait pas la fin du monde, juste plus de travail. Merci pour l'aide. Je vais essayer. – RyanPitts

+0

oui, ça a marché! Je suppose que je savais ce que je faisais après tout. Merci de le confirmer pour moi. Maintenant, existe-t-il un meilleur moyen de supprimer des données d'une colonne sur une ligne spécifique autre que la mise à jour de la ligne avec une valeur vide? Ou est-ce suffisant? – RyanPitts

+0

En fonction de vos contraintes, vous pouvez définir la valeur = NULL dans votre requête SQL. Cependant, une valeur vide devrait suffire dans la plupart des applications. –

Questions connexes