2011-03-31 3 views
-2

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près «) » à la ligne 1erreur de syntaxe SQL

Cant semblent corriger cette erreur:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     //It is a postback so check if it was by div click (NOT WORKING because the javascript isnt posting back) 
     string target = Request["__EVENTTARGET"]; 
     if (target == "DivClicked") 
     { 
      string id = Request["__EVENTARGUMENT"]; 
      //Call my delete function passing record id 
      using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;")) 
      { 
       cn.Open(); 
       using (OdbcCommand cmd = new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting="+id+")", cn)) 
       { 
        cmd.ExecuteNonQuery(); 
       } 
      } 

     } 
    } 
    string theUserId = Session["UserID"].ToString(); 
    PopulateWallPosts(theUserId); 
} 
+1

Gosh! J'espère que 'id' n'est pas' 1 OR 1 = 1; DROP TABLE WallPosting; - ' –

+0

: O que voulez-vous dire? –

+1

utilise des requêtes paramétrées au lieu de prendre une valeur dès la sortie du formulaire. C'est une vulnérabilité d'injection SQL sans paramétrer vos requêtes dans votre base de données. –

Répondre

5

vous n'avez pas besoin de la fermeture ) pour effacer.

using (OdbcCommand cmd = new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting=" + id, cn)) 
{ 
    cmd.ExecuteNonQuery(); 
} 
+0

+1. bonne trouvaille. – NotMe

2

C'est parce que vous avez un proche supplémentaire parenthèses

new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting="+id+")", cn)) 

essayer

new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting="+id, cn)) 
1
using (OdbcCommand cmd = new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting="+id, cn)) 

qui devrait être ce que vous avait un support supplémentaire

0

Vous fermeture un ) quand vous n'avez pas ouvert un ( auparavant. Cela devrait résoudre le problème.