2011-01-04 3 views
1

Wie würden Sie mehrere Zeilen in eine db einfügen, wenn bestimmte Felder Daten enthielten? Berücksichtigen Sie Folgendes:Einfügen mehrerer Zeilen in mysql DB

Dies erstellt mehrere Zeilen mit unterschiedlichen Vor- und Nachnamen, aber die Groß-/Kleinschreibung und die Stadt bleiben gleich. Für den Fall, dass nur 1 Eintrag vorhanden ist, wird dennoch eine Zeile für die anderen 2 erstellt. Wie kann eine Zeile nur erstellt werden, wenn Daten in einem bestimmten Feld vorhanden sind?

+0

Erstellen Sie diese Abfrage dynamisch mit Bedingungsoperator? –

Antwort

0

können Sie versuchen, eine if Fall, dass etwas nur tun würde, wie:

if (isset($field)) do thisquery 

oder

if ($field != "") do thatquery 
0

Ich nehme an, dies würde von einem Formular nehmen Informationen?

Wenn ja, benennen Sie die Eingaben wie "name =" Vorname [] "", was dazu führt, dass sie beim Übergeben in ein Array platziert werden, wie zB $ _POST ['Vorname'] [0] 3 Eingänge namens Vorname [], dann würden Sie $ _POST ['Vorname'] [0], $ _ POST ['Vorname'] [1] und $ _POST ['Vorname'] [2] bekommen.

Dann tun Sie etwas wie folgt aus:

$sql = 'INSERT INTO `cases` VALUES '; 

for($i = 0;$i < count($_POST['firstname']);$i++) 
{ 
    $sql .= "('$case','".$_POST['firstname'][$i]."','".$_POST['lastname'][$i]."','$city')"; 
    if($i != count($_POST['firstname']) - 1) 
    { 
     $sql .= ','; //Will insert a comma after each except the last. Count - 1 since $i will equal count - 1 on the last one, since it starts at 0 and not 1. 
    } 
} 

$register_case = mysql_query($sql); 

Ich denke, dass sollte funktionieren.

Alternativ könnten Sie eine foreach und fügen Sie ein "," auf jedem und dann schneiden Sie es vom rechten Ende der Zeichenfolge, wenn Sie fertig sind, oder tun Sie eine foreach und halten Sie einen externen Zähler, der nach dem Ende manuell erhöht. Auf den zweiten Gedanken, keiner von denen würde die Nachnamen zu fangen, gut ohne eine $ key => $ value-Typ-Sache, und tun $ _POST ['lastname'] [$ key]. Müsste auch mit einem if nach leeren Strings suchen.

Natürlich möchten Sie niemals direkt $ _POST oder $ _GET Werte an SQL übergeben, validieren Sie zuerst und stellen Sie sicher, dass es keine Injektion gibt.

+0

OMG-Injektion in der ANTWORT –

+0

Wenn Sie aufgepasst haben, würden Sie sehen, dass ich erwähnt habe, dass er es nicht so machen möchte, aber es war einfacher für mich, ohne Eingabe einer Validierungsfunktion, mit Array_map oder was haben Sie, um es in Gebrauch zu bringen, und dann zu erklären, was ich getan habe. – Phoenix