INSERT INTO (MySql)

Robert Steichele

Erfahrenes Mitglied
PHP:
    $anfrage="INSERT INTO newsletter VALUES ('";
$anfrage.="0', '";
$anfrage.= $datum;
$anfrage.= "', '";
$anfrage.= $email;
$anfrage.= "', '";
$anfrage.= $namen;
$anfrage.= "', '";
$anfrage.= "<a class='i' href='localhost/newsletter_admin.php?loesch=" . $email . "'>Löschen</a>";
$anfrage.= "')";

Ist diese Syntax (mit dem Link in der Datenbank) richtig bzw. überhaupt möglich?

Er trägt mir nichts in die Datenbank ein. Wenn ich ihm statt dem Link z.B $email als Variable gebe, wird alles problemlos eingetragen.
 
Nein diese ist falsch, da die Felder vor "VALUES" fehlen.
Vielleicht ist dies möglich und er nimmt die Felder von rechts nach links
aber imho falsch, da es nicht wirklich sauber programmiert ist.
In der DB kannst du so ziemlich alles speichern was du willst, es kommt nur auf die Felddefinition an. Du musst im Falle der URL aber mysql_escape_string() auf den Text anwenden, damit Hochkommata etc "escaped" werden.
Die Frage ist eher welchen Sinn das ganze so haben soll.

Entweder du machst bei einzeleintragungen
INSERT INTO tabellenname SET feldname='wert', feldname='wert',...

oder für mehrere Eintragungen mit einem Statement (das was du gewählthast)
INSERT INTO tabellenname fledname1,feldname2,... VALUES ('wertfuerfeld1','wertfuerfeld2',...)

bei mehreren eintragungen einfach beim 2ten beispiel ,('werfuerfeld1eintrag2', 'werfuerfeld2eintrag2',...)

anhängen.
 
Zuletzt bearbeitet:
Ich würs so machen:

PHP:
$anfrage="INSERT INTO newsletter VALUES ('0', '".$datum."', '".$email."', '".$namen."', '<a class=\"i\" href=\"localhost/newsletter_admin.php?loesch=".$email."\">L&ouml;schen</a>')";
 
Fast richtig siehts ja eigentlich so aus:
PHP:
$anfrage = 'INSERT INTO newsletter(
               feld1,
               feld2,
               feld3,
               feld4
            VALUES (
                \''0'\',
                \''.$datum.'\',
                \''.$email.'\',
                \''.$name.'\',
                \'<a class="i" href="localhost/newsletter_admin.php?loesch="'.$email.'">Löschen</a>\')';
 
Naja, durch den Link wird die Seite erneut aufgerufen und die Variable $loesch übergeben. Dabei wird dann der Datensatz gelöscht, dessen eMail-Adresse in der Variable steht.
So muß nur auf den Link geklickt werden, um einen Datensatz zu löschen.
Gäbe es da noch eine andere (evtl. bessere) Lösung?
 
Der einzig variable Parameter in dem Link-Feld ist die E-Mail-Adresse, die jedoch bereits in einem anderen Feld gespeichert wird und damit redundant ist.
Derartige Formatierungen nimmt man erst bei der Ausgabe vor.
Frag mich jetzt nicht, nach welcher Normalform das falsch ist. Aber so ist es auf jeden Fall nicht zulässig, da bin ich mir sicher.

Gruß hpvw
 
Die eMail-Adresse wird ja dabei nicht gespeichert, aber ich muß ja eine Variable haben über die ich genau diesen Datensatz löschen kann, auf dessen Link geklickt wurde.
 
Robert Steichele hat gesagt.:
Gäbe es da noch eine andere (evtl. bessere) Lösung?
Ich nehme mal an Du lässt Dir in einer while-Schleife eine Liste mit den Einträgen ausgeben und willst einen Link zum Löschen des betreffenden Eintrags haben. Genau in dieser Schleife generierst Du per PHP den Link.
 
Zurück