2011-04-23 5 views
0

j'ai mis un éditeur pour accéder à son contenu dans la base de données, puis je peux retrive et de le modifier et l'enregistrer est encore et voici ce que je l'ai utilisé:pourquoi ce code ne fonctionnera pas

string user = Page.User.Identity.Name; 

    MySqlConnection conn = new MySqlConnection(@"connection string;"); 
    MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv='" + '"' + Editor1.Content.Replace("'", "''") + '"' + "' WHERE id = '" + user + "' ", conn); 

    conn.Open(); 
    cmd.ExecuteNonQuery(); 

    conn.Close(); 

encartage et sélectionnez fonctionne bien mais mise à jour ne fait pas, il ne donne pas d'erreurs, mais il ne change tout simplement pas le contenu (peu importe ce que je change, il reste toujours le même contenu);

Je sais que c'est ouvert à l'injection sql et je passer à la requête et je paramétrisé faire cela après que les choses fonctionnent

je suis en utilisant asp.net 3.5, MySQL 5.0

j'ai identifié le problème et de faire une nouvelle question avec elle vous remercie tous pour votre aide

+0

Huh ... Sentant [injection de code] (http://en.wikipedia.org/wiki/Code_injection#SQL_injection) ne sommes nous pas? –

+0

s'il vous plaît, mettez un point d'arrêt et dites-moi si le 'Editor1.Content' est la valeur mise à jour que vous voulez, et dites-moi la valeur de' 'user'. –

+0

@just_name j'ai essayé un point de rupture et pour une raison quelconque le contenu de l'éditeur est toujours vide bien qu'il ait du contenu – Wahtever

Répondre

0

Peu importe pourquoi cela ne fonctionne pas, c'est tout simplement faux.

Vous êtes grand ouvert à SQL injection attacks, et cela devrait être votre première préoccupation.

Vous corriger cela en utilisant des paramètres à la place, quelque chose comme ceci:

MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv=?cv WHERE id = ?id", conn); 
cmd.Parameters.AddWithValue("cv", Editor1.Content); 
cmd.Parameters.AddWithValue("id", user); 
+0

merci je vais en fait passer à la requête paramétrée mais après avoir fait fonctionner les choses – Wahtever

+0

Utilisez-vous réellement la chaîne de connexion comme montré? c'est à dire. * à l'intérieur * de la chaîne? –

+0

Pourquoi n'essayez-vous pas la méthode paramétrée maintenant et voyez si cela ne résout pas aussi magiquement vos problèmes? –

0

ExecuteNonQuery doit retourner le nombre de lignes effectuées, dans cet esprit, vous pouvez déboguer le code. Pour nous aider à écrire la déclaration sql que vous produisez en chaîne? En plus, cette première chose qui vient à l'esprit est que id = 'user' n'a peut-être pas raison, id suggère un entier mais le nom ressemble à une valeur de chaîne.

+0

le nom d'utilisateur est exact que je l'utilise pour récupérer le contenu de la base de données – Wahtever

Questions connexes