kostenloser Webspace werbefrei: lima-city


daten in mySQL DB schreiben PROBLEM

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    j**4

    Frage: Warum funktioniert das script nicht... das script soll ne tabelle in die datenbanl anlegen mit den methoden die angegeben wurden... ?ber die jeweiligen formulare

    hier das script

    <?php


    // ?berpr?fung ob Daten im Formular eingegeben wurden

    if($login)
    {
    $voting_name = $_POST ['voting_name'];
    $voting_frage = $_POST ['voting_frage'];
    $voting_a1 = $_POST ['voting_a1'];
    $voting_a2 = $_POST ['voting_a2'];
    $voting_a3 = $_POST ['voting_a3'];


    // 1.) mySQL Einstellungen:
    // mySQL Verbindung aufbauen

    $connection = mysql_connect ("localhost","user","passwort");

    // mySQL Datenbank ausw?hlen

    $db = mysql_select_db ("datenbank", $connection);

    // 2.) mySQL Tabelle erstellen
    // Frage + 3 Antwortm?glichkeiten

    $sql = 'CREATE TABLE $voting_name ('; // Tabelle erstellen
    $sql .= '$voting_frage varchar(255) NOT NULL ,'; // Frage anlegen
    $sql .= '$voting_a1 int(8) unsigned NOT NULL auto_increment,'; // Antwort 1 anlegen
    $sql .= '$voting_a2 int(8) unsigned NOT NULL auto_increment,'; // Antwort 2 anlegen
    $sql .= '$voting_a3 int(8) unsigned NOT NULL auto_increment,'; // Antwort 3 anlegen
    $sql .= ') TYPE=MyISAM'; // Tabellentyp

    $query = mysql_query ($sql, $connection); // an mySQL Datenbank schicken

    // 3.) mySQL Tabelle f?llen
    // Frage + Antworten

    $sql = 'INSERT INTO $voting_name (.$voting_frage.,.$voting_a1.,.$voting_a2.,.$voting_a3.) VALUES(';
    $sql .= '(\' '.$voting_frage.'\', \''.$voting_a1.'\', \''.$voting_a2.'\', \''.$voting_a3.'\')';
    $query = mysql_query($sql,$connection);

    }
    ?>
    <form action="write.php" method="post">
    <p>
    <input name="voting_name" type="text">
    Name</p>
    <p>
    <input name="voting_frage" type="text">
    Frage</p>
    <p>&nbsp;</p>
    <p>
    <input name="voting_a1" type="text">
    Antwort 1</p>
    <p>
    <input name="voting_a2" type="text">
    Antwort 2</p>
    <p>
    <input name="voting_a3" type="text">
    Antwort 3</p>
    <p>&nbsp;</p>
    <input type="submit" name="login" value="Login">
    </form>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*******t

    muss nicht die verbindung zur SQL-DB gleich an den Anfang der php.datei?
  4. Autor dieses Themas

    j**4

    das ?ndert leider gar nichts ...

    er schreibt einfach keine tabelle und keine merkmale in die datenbank
  5. Autor dieses Themas

    j**4

    keiner ne antwort auf so eine newbie kacke? :lol:

    ich bin am verzweifeln :mad:
  6. a*****i

    Meister, was ist denn die Fehlermeldung? Nimm es mir nicht ?bel, aber ich installiere keine fremden Scripte einfach so bei mir zum debuggen. Tippe mal es passiert gar nichts :ZZZsleep:

    Au?erdem musst du mindestens mal die Dateinamen angeben, denn sonst kann man dir auch nicht helfen. Was steht in welcher Datei.

    Was mir aber sofort auff?llt:

    1. Das Script ist unsicher. Was w?rde passieren, wenn ein Benutzer als Daten "; drop table mysql;" eingibt? --> RTFM

    2.

    $sql = 'CREATE TABLE $voting_name ('; // Tabelle erstellen
    Nehmen wir an $voting_name w?re durch das Formular belegt mit "Paul". Was w?re der Wert von $sql?

    'CREATE TABLE $voting_name(' !! Warum? Weil du eine Zeichenkette definierst. Es funktioniert so:

    $sql = 'CREATE TABLE ' . $voting_name . ' ('; // Tabelle erstellen

    Ergebnis ist 'CREATE TABLE Paul (', weil du eine Zeichenkette mit der Variable und einer Zeichenkette verkn?pfst. PHP-Befehle, welche in einer Zeichenkette (also zwischen dem Hochkommata ' ') stehen, werden ignoriert. Deswegen musst du "CREATE.." mit dem Inhalt der Variable verkn?pfen, was mit dem Punkt-Operator geschieht.

    So, wenn es noch sicher werden soll, dann solltest du noch die Anf?hrungszeichen um alle Benutzereingaben setzen. Ist schwer zu erkennen, aber mit genauem Hinsehen... Oder in Wordpad kopieren und Schriftart Courier New mit Gr??e 14+, dann sieht man den Unterschied auch. Ansonsten RTFM MySQL-Doku

    $sql = 'CREATE TABLE \'' . $voting_name . '\' ('; // Tabelle erstellen

    Es empfiehlt sich generell _VOR_ dem Absetzen von SQL-Anfragen diese erst mal mit echo $query (wenn da die Anfrage drinnen ist) ausgeben zu lassen.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!