MySQL 5mal INSERT
Dähne
- php
Hallo,
könnt Ihr mir helfen, wie ich bis zu 10 INSERT's in eine MySQL Tabelle machen kann.
Ich möchte nicht 10mal mysql_query(insert into ...) schreiben.
Es ist so:
Ich habe auf einer Seite 10 Textfelder. Je nachdem, ob 1,2,3 oder 4,5,6 oder 10 Textfelder ausgefüllt sind, sollten die Inhalte der Textfelder in einer MySQL Datenbank eingetragen werden.
Die Datenbank hat nur ein Feld (titel).
Gruß
Dähne
echo $begrüßung;
könnt Ihr mir helfen, wie ich bis zu 10 INSERT's in eine MySQL Tabelle machen kann.
Schau dir im MySQL-Handbuch die Syntax zum INSERT-Statement an. Es gibt eine Variante zum Einfügen von mehreren Zeilen.
echo "$verabschiedung $name";
Hello,
könnt Ihr mir helfen, wie ich bis zu 10 INSERT's in eine MySQL Tabelle machen kann.
Schau dir im MySQL-Handbuch die Syntax zum INSERT-Statement an. Es gibt eine Variante zum Einfügen von mehreren Zeilen.
Das ist aber nicht unbedingt sinnvoll, weil man dann bei einem Fehler nicht weiß, bei welchem der Datensätze er aufgetreten ist.
Liebe Grüße aus Syburg
Tom vom Berg
Hallo,
Das ist aber nicht unbedingt sinnvoll, weil man dann bei einem Fehler nicht weiß, bei welchem der Datensätze er aufgetreten ist.
Aha, was schlagst Du dann vor?
Dähne
Hello,
Das ist aber nicht unbedingt sinnvoll, weil man dann bei einem Fehler nicht weiß, bei welchem der Datensätze er aufgetreten ist.
Aha, was schlagst Du dann vor?
Jeden Datensatz einzeln einfügen. Warum gefällt Dir das nicht? Sind es die zehn Queries, die dich stören, oder aber die Arbeit, dafür eine vernünftige Funktion zu schreiben?
Liebe Grüße aus Syburg
Tom vom Berg
Hallo,
die querys sind nicht das problem, sondern, ich überlege gerade wie ich das am vernüftigesten mache...
Zum Beispiel:
Ich fülle nur 3 von den 10 Textfeldern aus. Wenn ich jetzt die 10 querys (INSERT) mache, würden ja in der Datenbank nach den 3 Zeilen 7 Zeilen nachfolgen wo garnichts steht, also sowas:
NR TITEL
1 titel1
2 titel2
3 titel3
4
5
6
7
8
9
10
Wenn ich an einem anderen Tag nochmal 2 Zeilen ausfülle, sieht dann die Tabelle so aus:
NR TITEL
1 titel1
2 titel2
3 titel3
4
5
6
7
8
9
10
11 titel1
12 titel2
13
14
15
16
17
18
19
20
sowas will ich ja verhindern. Eigentlich wollte ich mit strlen()
die textlänge abfragen und so die querys ausführen. Das wären dann 10 if-Anweisingen. Das ist bestimmt nicht so der hit. Da habe ich mir gedacht ob es nicht vielleicht mit empty()
besser wäre, damit ich nur eine if-Anweisung habe. Bin jetzt nun ratlos, wie ich es am besten mache. Der Code soll ja schließlich leserlich bleiben.
Für Eure Vorschläge bin ich Euch sehr dankbar. Ich möchte ja von Euch gar kein fertiges Skript haben.
Gruß
Dähne
Hello,
sowas will ich ja verhindern. Eigentlich wollte ich mit
strlen()
die textlänge abfragen und so die querys ausführen. Das wären dann 10 if-Anweisingen. Das ist bestimmt nicht so der hit.
Wie wäre es denn mit einer Schleife?
<input name="titel[1]" />
<input name="titel[2]" />
<input name="titel[3]" />
#----
foreach ($_POST['titel'] as $key => $val)
{
$titel = trim($val);
if (strlen($titel) > 0 )
{
$sql = "insert into tabelle
set titel
= '". mysql_real_escape_string($titel, $con)."'";
$res = mysql_query($sql, $con);
## und hier noch die Fehler einsammeln, die von den Queries zurückgegeben wurden.
}
}
Liebe Grüße aus Syburg
Tom vom Berg
Hallo,
habe dein posting erst jetzt gelesen.
danke für die hilfe.
gruß
dähne
Hallo,
ich habe vergessen zu fragen, ob es sinnvoll ist, einen Laufindex, z.B. i=1, in einer while-Schleife reinzusetzen, wo eine if-Anweisung ist, die prüft ob das Feld leer "empty()" ist oder die Textlänge strlen() größer als 0 ist. Da habe ich ja wegen der while-Schleife, quasi eine if-Anweisung.
Nur weiß ich nicht wie ich es mit dem an den $_POST ranschreibe,
etwa so: $_PSOT[textfeld]i ?? würde es gehen?
Meine Textfelder sind durchnummeriert:
textfeld1
textfeld2
textfeld3
.
.
.
Gruß
Dähne
echo $begrüßung;
» Das ist aber nicht unbedingt sinnvoll, weil man dann bei einem Fehler nicht weiß, bei welchem der Datensätze er aufgetreten ist.
Aha, was schlagst Du dann vor?
Es kommt auf den Anwendungsfall an. Wenn du keinen Unique-Index auf der Spalte hast, dann wird ein Fehler eher bei generellen Problemen auftreten. In dem Fall kannst du ruhig das Multi-Insert verwenden. Hast du einen Unique-Index und dich interessiert es nicht, wenn Datensätze bereits vorhanden sind - es sollen dann einfach die restlichen Datensätze eingetragen werden - dann nimm den Zusatz INSERT IGNORE.
echo "$verabschiedung $name";