Ein einfacher Insert
Johann
- datenbank
Hallo ,
ich habe meine inserts auf eine mysql DB bisher immer so gemacht
$statement = "INSERT INTO kunde
SET
customer_name = '$username',
customer_nachname = '$nachname',
customer_vorname = '$vorname',
customer_strasse = '$strasse',
customer_hausnummer = '$hausnummer',
customer_postleitzahl = '$plz',
customer_ort = '$ort'";
Da ich verschiedene Eingabeformulare habe und das so viele Felder sind habe ich mich gefragt ob das nicht auch einfacher geht.
Ich bin mir sicher das alle Felder der DB-Tabelle dieselben Namen haben wie die Namen der Insert-felder in Html.
Gibts eine Möglichkeit nicht alle felder im insert extra nochmal aufzuzählen a la customer_strasse = '$strasse',?
mfg
Johann
Halihallo Johann
Ich bin mir sicher das alle Felder der DB-Tabelle dieselben Namen haben wie die Namen der Insert-felder in Html.
Die meisten Programmiersprachen unterstützen das Durchlaufen eines assoziativen Arrays.
Durch eine Schleife über die Parameter kannst du die Einträge "automatisch" in den Query
einfügen.
Ich würde es jedoch so machen, dass du alle Felder, die man eingeben kann, in ein
Array schreibst, über dieses iterierst und die jeweiligen Name=Value Pairs in den Query
schreibst. So verhinderst du, dass der Benutzer durch Raten auch andere Felder be-
schreiben kann.
In PHP (was verwendest du?) gibt es die genannten assoziativen Arrays in den globalen
Variablen $_POST / $_GET.
Zudem solltest du register_globals auf on stellen, falls du wirklich PHP verwendest,
da jede aktuelle Version dies so per default macht.
Gibts eine Möglichkeit nicht alle felder im insert extra nochmal aufzuzählen a la customer_strasse = '$strasse',?
Nein.
Viele Grüsse
Philipp
Hallo Philipp,
Zudem solltest du register_globals auf on stellen, falls du wirklich PHP verwendest,
da jede aktuelle Version dies so per default macht.
ehh... das ist nicht ganz richtig - register_globals sollte auf _off_ was auch die Standardeinstellung der Versionen ab 4.2(?) ist.
Grüße aus Nürnberg
Tobias
Halihallo Tobias
Zudem solltest du register_globals auf on stellen, falls du wirklich PHP verwendest,
da jede aktuelle Version dies so per default macht.
ehh... das ist nicht ganz richtig - register_globals sollte auf _off_ was auch die Standardeinstellung der Versionen ab 4.2(?) ist.
Vergeben soll mir werden die Anstiftung zu kurrios und dümmlichen Konfigurationen, du
hast natürlich recht.
Viele Grüsse
Philipp
Hallo Johann,
Gibts eine Möglichkeit nicht alle felder im insert extra nochmal aufzuzählen a la customer_strasse = '$strasse',?
Gibt es IMHO:
Mit mysql_list_fields() bekommst Du alle Felder einer Tabelle zurück, diese kannst Du dann in einer for-Schleife mit mysql_field_name() in ein Array schreiben.
z.B.
for ($i = 0; $i < $columns; $i++)
{
$sql_arr[] = mysql_field_name($fields, $i) . "='$" . mysql_field_name($fields, $i) . "'";
}
Mit der Funktion implode kannst Du dann noch zwischen den einzelnen Werten die Kommas einfügen:
$sql_part = implode( ", ", $sql_arr );
$statement = "INSERT INTO kunde
SET" . $sql_part;
Ist nicht getestet, aber ich denke mal das es so funktionieren könnte?
Ich hoffe das hilft Dir weiter.
Gruss AndreD