2009-11-18 6 views
0

Ok j'ai une table dans mon navigateur de requêtes MySQL comme indiqué ci-dessous:besoin d'aide avec une requête MySQL

NAME:   Jobs: 

Kate   Contractor 
John   Janitor 
Bob   Writer 
Don   Waitress 

Disons que je veux remplacer le travail de Kate à l'artiste. comment ferais-je cela comme une requête MySQL. Je sais que cela implique INSERT INTO thingy, mais je ne suis pas vraiment sûr.

+4

Merci de ne pas crier. Toutes les majuscules et les points d'exclamation sont l'équivalent en ligne des cris. –

+2

@Eric J .; accepté, et donc édité. –

+0

désolé les gars :(>. < – lab12

Répondre

5
UPDATE table_name SET Jobs="job_type" WHERE name="Kate"; 

Compte tenu du fait que ce n'est pas correctement paramétrés pour dans une application Web, ni en aucun cas protégé contre l'utilisation malveillante, devrait-il être exposé sur le web.

n'est « Kate » un identifiant unique, donc il devrait y avoir une clé primaire (quel qu'il soit) utilisé pour identifier une spécifique « Kate » de votre table, à quel point la requête est modifiée pour:

UPDATE table_name SET Jobs="job_type" WHERE primary_key_name="unique_identifier_for_user"; 
2

Pour effectuer un remplacement, vous devez identifier de manière unique la ligne de base de données que vous souhaitez remplacer. Habituellement, il y a une colonne d'identification pour le faire. Est-ce que votre table en a un?

Vous utilisez la commande UPDATE, pas la commande INSERT INTO, pour modifier les données existantes.

S'il n'y a qu'une seule Kate dans la base de données que vous pouvez faire quelque chose comme ceci:

MISE À JOUR my_table_name SET Emploi = 'Artiste' WHERE NAME = 'Kate'

Vous voulez remplacer NAME = 'Kate 'avec ID = 999 si vous avez une colonne ID (où 999 doit être remplacé par l'identifiant réel de Kate), sinon tout le monde nommé Kate sera transformé en artiste.

EDIT:

Ricebowl a un bon point si vous laissez aux utilisateurs de saisir cette forme libre directement. Ils peuvent mettre dans les caractères qui ont une signification spéciale pour SQL et faire de très mauvaises choses avec votre base de données. Commencez par lire les bases, puis prenez le temps de lire comment protéger les attaques "Injection SQL".

Toute cette affaire est illustrée avec un de mes comics préférés: alt text

(Et voir le source blog pour une discussion plus approfondie)

+0

Pourquoi, merci, monsieur =] En outre, un lien direct à la source pour la bande xkcd: http: // xkcd .com/327 / –

0
UPDATE jobs_table SET `Jobs` = 'Artist' WHERE `name` = 'Kate' 
0

MISE À JOUR ' JobsTable ' SET ' Emploi ' = " Artiste " OÙ ' Nom ' = " Kate "

0

Une autre façon, ne pas sur cette fonctionnalité Forêt

`REPLACE INTO jobs_table (`Jobs`, `name`) ('Artist', 'Kate')` 

Lorsque vous ne savez pas si la clé primaire « Kate » existe ou non vous ne devez pas écrire

$a = mysql_query("select * where jobs = 'Kate'") 
if($a) 
    update 
else 
    insert 

ça devient plus rapide et plus simple!