# MySQL: INSERT INTO will nicht.



## Chilene (3. Mrz 2005)

Ich poste einfach erst mal den Quelltext:


```
import java.sql.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
//import com.oreilly.servlet.multipart.*;


public class NewsSystemEingabe extends HttpServlet {

    PrintWriter out ;
    
public void doGet(HttpServletRequest request,
        HttpServletResponse response) throws IOException {
         out = response.getWriter();
         response.setContentType("text/html");
         
            out.println("<html><head><title></title></head>");
            out.println("<body><center>");
            out.println("<table border=\"0\">");
            out.println("<form action=\"NewsSystemEingabe\" method=\"post\" name=\"formular\" enctype=\"application/x-www-form-urlencoded\">");
            out.println("<tr><td><u>Topic:</u></td></tr>");
            out.println("<tr><td><input name=\"topic\" type=\"text\" size=\"30\"></td></tr><tr></tr>");
            out.println("<tr><td><u>Inhalt:</u></td></tr>");
            out.println("<tr><td><textarea name=\"inhalt\" cols=\"30\" rows=\"10\"></textarea></td></tr>");
            out.println("<tr><td><input type=\"submit\" value=\"Absenden\">");
            out.println("<input type=\"reset\" value=\"Abbrechen\"></td></tr>");
            out.println("</form>");
            out.println("</body>");
            out.println("</html>");
        }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
                                throws ServletException, IOException {
                                    
                final String host = "host";
                final String database = "database";
                final String user = "user";
                final String password = "password";
                
                String topic=request.getParameter("topic"); 
                String inhalt=request.getParameter("inhalt");
    
                out = response.getWriter();
                
                String query = "INSERT INTO News_News(topic,inhalt) VALUES("+topic+","+inhalt+")";
                
                try {
                    Class.forName ("com.mysql.jdbc.Driver");
                    Connection conn = DriverManager.getConnection ( "jdbc:mysql://"+host+"/"+database, user, password);   
                    Statement stmt = conn.createStatement();
                    stmt.executeUpdate(query);
                    
                    stmt.close();
                    conn.close();
                    }
                    
                    catch (ClassNotFoundException e) { out.println("Can't load driver " + e);} 
                    catch (SQLException e) { out.println("Database access failed " + e);}
                }
   
  }
```
Wie man sieht....ein einfaches Formular, mit dem ein News-Eintrag in die Datenbank eingetragen werden soll. Wenn ich das Servlet jetzt aber aufrufe und die Felder (topic,inhalt) ausgefüllt habe und abschicke, dann kommt:


```
Database access failed java.sql.SQLException: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Nummer Irgendwas,Test-News Inhalt Test-News Inhalt.....Inhalt I
```

Kann es vielleicht sein, dass die Textarea nicht mit String zusammen funktioniert? Oder ist die Syntax falsch (hab zig Seiten durchsucht und scheint, dass meine eigentlich richtig ist)?
ach ja...in der Tabelle News_News gibt es noch eine Spalte "Datum". Wie bekomme ich es hin, dass das aktuelle Datum (des Servers?) automatisch auch eingetragen wird?
Thx für eure Hilfe!


----------



## DP (3. Mrz 2005)

du braucht ein hochkomma für strings

also values('text', 'text2')


----------



## TRunKX (4. Mrz 2005)

```
String query = "INSERT INTO News_News(topic,inhalt) VALUES('"+topic+"','"+inhalt+"')";
```


das kopieren und da einfügen wo das vorher Stand dann gehts!


*freu*  hach als man sich bei sowas noch den Kopf zermartert hat ..... *in alten Zeiten schwelgt*


----------



## Chilene (4. Mrz 2005)

Danke für eure Hilfe! Klappt alles wunderbar und jetzt hab ich nur noch das Problemchen mit dem Datum, weil es in dem NewsSystem eben noch ein Feld dafür gibt!


----------



## bambi (4. Mrz 2005)

Hi,

ich hab' da mal was zur Systemzeit gefunden. Es gibt 2 Funktionen NOW() und CURRENT_TIME():


> MySQL is quite capable of telling the date and time, using the NOW() function:
> 
> mysql> SELECT NOW();
> +---------------------+
> ...


Die URL dazu: http://www.databasejournal.com/features/mysql/article.php/2172731[/quote]


----------



## Chilene (4. Mrz 2005)

Thx @ bambi....ich werd mich gleich mal ranmachen und gucken, ob ich es damit hinbekomme!  :toll:


----------



## hephaistos (14. Mai 2005)

hallo,

eine frage bezügl. sql & insert, passend zu diesem thread:
wie kann ich sicher gehen, dass ein mysql insert/update/delete/select usw statement gegen sql injection sicher ist?
gibt es irgendwelche klassen, die eine art "addslashes" machen?

danke im voraus!


----------



## hephaistos (16. Mai 2005)

jojo  PreparedStatements - für alle, die das auch wissen wollten


----------

