2009-04-09 2 views
1

Ich entwickle ein Anwesenheitsmanagement-Programm, das verwendet wird, um die Abwesenheitsdaten eines Studenten zu verwalten. Benutzer dieser Software müssen verschiedene Daten eingeben, die einmal im Monat aktualisiert werden: zum Beispiel würde eine Liste von Daten, an denen ein Student für diesen bestimmten Monat abwesend war, eingegeben, und mein Programm muss sie dann in einer Datenbank mit jedem speichern Datum als neue Zeile in der entsprechenden Tabelle hinzugefügt.Wie kann ich ein Array von Daten in eine Datenbanktabelle einfügen?

Ich habe die Daten intern mit Arrays gespeichert, wie kann ich diese in die Datenbank übertragen? Wie soll ich vorgehen?

Antwort

0

Iterieren Sie über das Array und führen Sie SQL für jedes Datum aus.

+0

warum warum warum? weil ich nicht denke, dass man ohne Rückfragen und ohne Rücksicht auf bessere Optionen über Abfragen iterieren kann, ist sehr gut. aber wie ich zu Johnnietheblack sagte, war mein Triggerfinger zu schnell und ich entfernte meinen Downvote. – markus

2

Sie haben das verwendete Datenbanksystem nicht erwähnt, daher ist meine Antwort allgemeiner Natur. Der üblicher Weg, dies zu tun, ist es, mehr Insert-Anweisungen nacheinander auszuführen:

INSERT INTO Table1 (FirstColumn, SecondColumn) 
VALUES ('a', 'b'); 
INSERT INTO Table1 (FirstColumn, SecondColumn) 
VALUES ('c', 'd'); 
INSERT INTO Table1 (FirstColumn, SecondColumn) 
VALUES ('e', 'f'); 
GO 

Der Trick Weg, dies zu tun, ist die UNION ALL-Anweisung zu verwenden:

INSERT INTO Table1 (FirstColumn, SecondColumn) 
SELECT 'a', 'b' 
UNION ALL 
SELECT 'c', 'd' 
UNION ALL 
SELECT 'e', 'f' 
GO 

Versionen von SQL Server vor 2008 unterstützt nur diese Methoden. Aber SQL 2008 und MySQL 3.22 und höher unterstützt die Reihenbauweise auch:

INSERT INTO Table1 (FirstColumn, SecondColumn) 
VALUES ('a', 'b'), 
VALUES ('c', 'd'), 
VALUES ('e', 'f') 
GO 

Jetzt können Sie eine der oben genannten Methoden verwenden, um durch Ihre Array zu durchlaufen, und fügen Sie eine individuelle Betreuung Zeilen in die Datenbank.

+0

Ich mag den dritten Weg, wenn es funktioniert –

+0

Yup, es ist irgendwie cool, nicht wahr! – Cerebrus

2
 
foreach($arrayName as $arrayValue) { 

// run your query here! 

} 

zum Beispiel:

 
$myArray = array('apple','orange','grape'); 

foreach($myArray as $arrayFruit) { 
$query = "INSERT INTO `Fruits` (`FruitName`) VALUES ('" . $arrayFruit . "')"; 
mysql_query($query, $connection); 
} 

macht das Sinn macht/passen, was Sie denken?

+0

Sie könnten Bind Variablen verwenden wollen ... – Thilo

+0

sehr wahr ... ich zweite, dass ... nur ein einfaches Beispiel tho geben. Wenn die Variablen vom Benutzer zur Verfügung gestellt werden, oder Sie haben eine Tonne von Variablen im Array, dann def Bind Variablen – johnnietheblack

+0

in Ordnung, fair genug ... aber ID gerne verstehen, wie es sonst geht? Ich bin ernst ... wenn Sie eine Ressource haben, wäre es süß. – johnnietheblack

1

Möchten Sie die Daten separat speichern, damit Sie mit ihnen jonglieren, sie abfragen usw.? Oder möchten Sie das Array nur so speichern, wie es ist?

Wenn Sie die Daten separat gespeichert werden sollen Sie können eine Tabelle mit einer FK an Studenten, eine Säule für Datum und eine Spalte für die Natur des Datums, wie Abwesenheit zu erstellen, zu spät, ...

Dann würden Sie tatsächlich die einzelnen Daten in diese Tabelle speichern. Wenn Sie müssen, indem Sie, aber wenn Sie mit einer der Lösungen von Cerbrus können! Es wird nicht empfohlen, db-Abfragen innerhalb von Schleifen zu haben.

Wenn Sie das Array nur irgendwo speichern müssen, können Sie es serialisieren und die serialisierte Zeichenfolge in einer Text- oder Varcharspalte speichern.

+0

also, schlagen Sie vor, dynamisch eine UNION-Anweisung mit der Schleife zu erstellen - wenn das Array dynamisch in der Natur ist? ... und dann anstatt mehrere Abfragen zu durchlaufen, einfach einmal die UNION zu verwenden? – johnnietheblack

+0

ja! nicht vielleicht für eine kleine App, die ich nie skalieren werde. oder eine kleine Aufgabe, von der ich weiß, dass sie aufgrund ihrer Natur nie mehr als ein paar Wiederholungen benötigt. – markus

+0

richtig ... gute Technik sicher. Das ist für mich wertvoll, weil ich normalerweise ziemlich große dynamische Schleifen für das ausführen muss, was ich tue ... weshalb ich das wissen wollte – johnnietheblack

0

Welche Sprache und welche Art von Datenbank verwenden Sie? Ist das eine Webanwendung? Eine Desktop-Anwendung? Ohne weitere Informationen können wir Ihnen nicht helfen.

Je nach Ihrer Situation könnte eine der oben genannten Lösungen funktionieren. Oder Sie können sogar alle Anwesenheitsdatensätze gleichzeitig als CSV- oder XML-Dokument laden. Vielleicht hilft Ihnen ein bisschen mehr Forschung auf Ihrer Seite, eine nützlichere Frage zu stellen?