Hallo zusammen,
ist es empfehlenswert eine POST-Variable per Schleife in eine Datenbank einzulesen? Die Felder der POST-Variablen sind genauso benannt wie die die der Datenbankspalten.
Gruß
Hallo zusammen,
ist es empfehlenswert eine POST-Variable per Schleife in eine Datenbank einzulesen? Die Felder der POST-Variablen sind genauso benannt wie die die der Datenbankspalten.
Gruß
Moin!
Empfehlenswert nur bedingt, denn grundsätzlich sollte man folgendes Beherzigen: Don’t trust anyone!
Du musst vorher dafür sorgen, dass die Inhalte aus den POST-Variablen „entschärft“ werden, um SQL-Injections zu vermeiden. In PHP gibt es dafür extra die Funktion mysql_real_escape_string() bzw. mysqli_real_excape_string() oder die Version ohne Anpassung an die Verbindungseinstellung: mysql_escape_string() bzw. mysqli_escape_string().
Direkt sollte man niemals (!!!) Daten von Nutzern (GET, POST, was auch immer) in die Datenbank schreiben.
LG
Lutz
Hallo und danke für die Antwort!
Derzeit speichere ich die SQL-Befehle in Variablen und führe diese dann aus. Klappt soweit ganz gut, aber leider ist es halt bei vielen Felder in der POST-Variablen und entsprechend vielen Spalten in der Tabelle, das SQL-Kommando sehr groß wird.
Gibt es hierfür irgendeine Erleichterung?
Gruß
halt bei vielen Felder in der POST-Variablen und entsprechend
vielen Spalten in der Tabelle, das SQL-Kommando sehr groß
wird.Gibt es hierfür irgendeine Erleichterung?
? Wie soll das denn gegen ? Die Werte brauchst du doch , also wird der SQL solang wie halt die benötigten werte auch .
Oder willst du wissen wie du ein array durchgehst um daraus einen string zu bauen ?
Also das Thema ist nicht SQL sondern anscheined PHP
ich kenn auch keine POST Variablen in MySQL .
ALSO BITTE SCHREIB DEINE FRAGE IN DAS BRETT WO ES HINGEHÖHRT oder sach dem Moderator bescheid er solls verschieben.
Schon erledigt!
Hallo,
sorry, ist das falsche Brett. Hab’ den Moderator schon angeschrieben.
Gruß und Entschuldigung.
Die einzige Erleichterung wäre - wie schon gesagt - aus dem Array das SQL-Statement zu erstellen. Dann musst du aber sicherstellen, dass in dem Array auch nur Keys verwendet werden, die einem Feld in der Tabelle entsprechen:
<?php $aFields = array ();<br />
foreach ($\_POST['array\_mit\_feld\_inhalten'] AS $sField =\> &$mValue)
{
$aFields['`'.$sField.'`'] = '`'.$sField.'`=\''.mysql\_real\_escape\_string ($mValue).'\''; // Der zweite Parameter für mysql\_real\_escape\_string ist optional!
}
$sSql = 'INSERT INTO `tabelle` ('.implode (',', array\_keys ($aFields)).') VALUES ('.implode (',', $aFields).')';
?\>
Lass das mal auf dich wirken, schau dir die Funktionen im Online-Manual auf php.net nach und wenn du Fragen hast: Gerne her damit
recht herzlichen dank , muss doch seine ordnung haben damit das finden besser wird.
Hallo und danke für die Antwort!
Lass das mal auf dich wirken, schau dir die Funktionen im
Online-Manual auf php.net nach und wenn du Fragen hast: Gerne
her damit
Ja, das habe ich
Aber ich bin mir jetzt gar nicht sicher, ob ich die For-Schleife so platzieren kann.
Es handelt sich um verschiedene POST-Array wie z.B. $_POST[‚kundenauswahl‘], $_POST[‚vertrag‘], $_POST['name] etc…Kann ich da überhaupt mit einer Schleife all dies unterschiedlichen Array erreichen?
Gruß
Moin!
Wichtig ist - und deshalb verwendete ich auch ein $_POST[‚array_mit_inhalten‘] - dass du alle Elemente in einem mehrdimensionalen Array in $_POST speicherst. Würdest du einfach ein foreach auf $_POST durchführen, könntest du keine alternativen Informationen übertragen, da alle für den Query geparsed würden.
Deshalb solltest du deine Formular-Felder entsprechend so aufbauen:
usw.
Dann greifst du mit $_POST[‚array_mit_inhalten‘] auf eben dieses - ich nenne es einfach mal Sub-Array - zu und kannst in $_POST noch weitere Informationen übertragen, die NICHT in den Query sollen (z.B. $_POST[‚weitere_information1‘], usw.).
Sollte es hier noch unklarheiten geben, versuch dir erstmal darüber klar zu werden, was ein mehrdimensionales Array ist und was foreach genau macht.
MfG
Lutz
Danke!
Sorry für die späte Rückmeldung! Ich hab es zwar noch nicht so ausprobiert, aber trotzdem vielen Dank für deine Hilfe!
Gruß