problem beim db schreiben

  • hallo!

    hab mal wieder ein kleines problem. ich will eigentlich nur was in eine mysql-db schreiben - geht aber net
    die varibalen werden aus einer form befüllt - das worked. das sqlstatement stimmt auch. es wird nur nix in die db geschriebn *?*

    if (isset($add_title)) {

    $add_query= "INSERT INTO kontext (id2,name) VALUES ($topic_id,$add_title);";
    $error = mysql_error();
    if (!$result = mysql_query($add_query)) {
    print "$error";
    exit;
    }

    // bzw. das geht auch net
    $add_query = mysql_query($add_query) or die(mysql_error());
    if($add_query) echo "<br>passt!<br><br>\n";
    }

    [size=-2] Available for your projects at great expense and inconvenience [/size]

  • Zitat von sentencedX

    die varibalen werden aus einer form befüllt - das worked.


    Hier wie so oft die Empfehlung, die vom Client empfangenen Variablen aus den "superglobal arrays" $_GET, $_POST, $_COOKIE, $_REQUEST, etc. auszulesen. Die "register globals"-Option von PHP (durch die automatisch globale Variablen mit den vom User angegebenen Namen erzeugt werden) ist ein Sicherheitsrisiko und sollte nicht verwendet werden.


    Zitat von sentencedX

    $add_query= "INSERT INTO kontext (id2,name) VALUES ($topic_id,$add_title);";


    Hier liegt der Fehler, wenn ich mich nicht ganz irre: du mußt die einzelnen Values in Hochkommas setzen! Ich nehme an, daß deine 2 Variablen diese nicht beinhalten. Richtig wäre also:


    PHP
    $add_query = "INSERT INTO kontext (id2, name) VALUES ('$topic_id', '$add_title')";


    Achja: Die query sollte eigentlich nicht mit einem Strichpunkt enden, nur zur Info.

    Du solltest dich außerdem mal mit dem Escapen von Strings beschäftigen, das heißt daß z.B. das Hochkomma ' durch \' ersetzt wird. Keinesfalls sollte User-Input ungeprüft an die Datenbank geschickt werden! Ansonsten könnte es große Probleme geben, falls $add_title durch den User z.B. auf "bla'bla" gesetzt werden würde. Siehe dazu addslashes() oder mysql_escape_string().


    Zitat von sentencedX

    $add_query= "INSERT INTO kontext (id2,name) VALUES ($topic_id,$add_title);";
    $error = mysql_error();


    mysql_error() hier aufzurufen macht nicht viel Sinn, da hast du ja noch garkeine mysql-Operation ausgeführt! Mach das lieber nach einem mysql_query().

  • danke! hatte vor addslashed einzubauen, wenns prinzipell mal alles worked. thx!

    [size=-2] Available for your projects at great expense and inconvenience [/size]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!