Phillip: INSERT INTO

Hallo!

warum bekomme ich hier immer den fehler "es ist ein fehler aufgetreten" ?? es muss wohl etwas mit der zeile $sql = "INSERT...... zu tun haben. nur was?? wäre echt super wenn mit jmd. weiterhelfen kann.. vielen dank,

phillip

<?php

require "mysql_zugangsdaten.php";

$nick = $_POST['nick'];
$pw = $_POST['pw'];
$vorname = $_POST['vorname'];

$connectionid  = mysql_connect ("$DB_HOST", "$DB_USER", "$DB_PW");
if (!mysql_select_db ("$DB_NAME", $connectionid))
{
  die ("fehler beim herstellen der verbindung zur datenbank aufgetreten");
}

$sql = "INSERT INTO benutzerdaten2 (nick, pw, vorname), VALUES ($nick, $pw, $vorname)";

mysql_query ($sql);

if (mysql_affected_rows ($connectionid) > 0)
  {
    echo "user erfogreich erstellt";
  }
  else
  {
   echo "es ist ein fehler aufgetreten";
  }
?>

  1. Hallo Phillip,

    $connectionid  = mysql_connect ("$DB_HOST", "$DB_USER", "$DB_PW");
    if (!mysql_select_db ("$DB_NAME", $connectionid))

    die Anführungszeichen um die Variablen sind überflüssig.

    die ("fehler beim herstellen der verbindung zur datenbank aufgetreten");

    du solltest dir im Fehlerfall eine Meldung ausgeben lassen, die dir bei der Fehlersuche auch hilft - die Meldung "Fehler [...]" ist im Gegensatz zu mysql_error() aussagelos.

    $sql = "INSERT INTO benutzerdaten2 (nick, pw, vorname), VALUES ($nick, $pw, $vorname)";

    du möchtest dir http://dev.mysql.com/doc/mysql/de/HANDLER.html anschauen und feststellen, dass das Komma vor "VALUES" zu viel ist.

    mysql_query ($sql);
      if (mysql_affected_rows ($connectionid) > 0)

    warum überprüfst du nicht erstmal ob mysql_query überhaupt erfolgreich war?

    echo "es ist ein fehler aufgetreten";

    s.o. ein mysql_error() hätte dir vermutlich verraten, wo der Fehler liegt.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. vielen dank,
      ihr habt mir sehr geholfen...

      grüße aus husum
      phillip

  2. Hallo Phillip,

    warum bekomme ich hier immer den fehler "es ist ein fehler aufgetreten" ?? es muss wohl etwas mit der zeile $sql = "INSERT...... zu tun haben. nur was?? wäre echt super wenn mit jmd. weiterhelfen kann.. vielen dank,

    $nick = $_POST['nick'];
    $pw = $_POST['pw'];
    $vorname = $_POST['vorname'];

    ...

    $sql = "INSERT INTO benutzerdaten2 (nick, pw, vorname), VALUES ($nick, $pw, $vorname)";

    Die SQL-Anweisung sieht nun in etwa folgendermassen aus:

    INSERT INTO benutzerdaten2
        (nick, pw, vorname),
        VALUES
        (Otto Normalverbraucher, geheim, Otto);

    Erster Fehler:  das Komma hinter der Feldliste (Zeile 2).
    Zweiter Fehler: Zeichenketten sind in einfache Anführungszeichen zu setzen.
    Dritter Fehler: Du übernimmst Formulareingaben ungeprüft in eine SQL-Anweisung.

    Zum dritten Fehler befrage bitte das </archiv/>. Es spuckt z.B. </archiv/2004/1/69286/#m398490> aus.

    Freundliche Grüsse,

    Vinzenz

  3. Hallo Phillip!»» warum bekomme ich hier immer den fehler "es is

    $sql = "INSERT INTO benutzerdaten2 (nick, pw, vorname), VALUES ($nick, $pw, $vorname)";

    ^
    Warum ein Komma? ----------------------------------------^

    Noch ein Tipp: Daten nicht einfach so in die Datenbank speichern: Gefahr von SQL Injections.

    Mehr Informationen findest du z. B. hier:

    - MySQL-Manual (en): 14.1.4 INSERT Syntax
       http://dev.mysql.com/doc/mysql/en/INSERT.html
     - MySQL-Manual (de): 7.4.2 INSERT-Syntax
       http://dev.mysql.com/doc/mysql/de/HANDLER.html

    - 16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?
       http://www.dclp-faq.de/q/q-sql-injection.html