Einfügen eines array in eine mysql-Datenbank Spalte
Ich versuche, das einfügen von Werten aus einer multi-select-Dropdown in einem Formular in einer mysql-db-Spalte. Zum Beispiel: Die drop-down-hätte eine oder mehr Entscheidungen, die dann gewählt wird, wenn das Formular gepostet wurde, es würde einfügen der Daten in einer Spalte in einer mysql-db. Ich bin am stecken, wie die Daten eingefügt werden sollen.
- Betrachten Sie die Normalisierung Ihrer Daten. Machen Sie Ihre Tabelle "lang und Dünn" statt "variable Breite-array" gezwungen, in einem einzigen Feld
- Bevor Sie den Kopf auf diesem Weg - arrays zu-string-Spalte - überlegen Sie, ob Sie jemals wollen, um die Abfrage von Daten mithilfe von SQL. Wenn ja, dann müssen Sie beginnen die Normalisierung der jetzt, wie mlt schlägt.
- Könnten Sie ein wenig genauer in deiner Frage? Was ist dein code bisher? Wie ist der rest der app (oder das Training)?
- Einige Leute sagen, Sie zu serialisieren/normalize/jsonize/andere-ize, aber ich würde raten, nicht zu Folgen, wie Beratung. Dies ist einfach nur eine schlechte Praxis und macht es völlig sinnlos ist die Verwendung einer RDB-system. Versuchen Sie stattdessen zu lernen, wie es funktioniert von der tatsächlichen Codierung Beispiele von Quellen, die Sie kennen, sind vertrauenswürdig.
- können Sie erklären, ein wenig mehr, warum die Normalisierung einer Datenbank ist eine schlechte Praxis?
- oops. Habe ich gesagt, 'Normalisierung'? Mein Fehler, ich meinte wirklich serialisieren (was nicht dasselbe ist, in der Tat). Die Normalisierung ist natürlich der Weg zu gehen. Aber IMHO Serialisierung von Daten in ein DB-Feld hat mehr Nachteile als Vorteile.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, legen Sie in eine einzige Zeile, dann können Sie mit implode() zu erzeugen, durch Komma getrennte Daten, oder können Sie die Funktionen json_encode() und fügen Sie zu Ihrer colum.
Sagen, Sie erhalten die Daten als
Das ist für das einfügen von Daten in eine einzige Spalte. Beim abrufen die Sie tun können, explode() oder json_decode (), um die Daten zurück und können Sie in der multi-select wieder.
Wenn Sie möchten, eine Zeile für jedes Element dann einfach in einer Schleife durch das array und fügen Sie Sie
können Sie durch drehen des array in einen einzelnen string mit http://us1.php.net/function.implode
legen Sie den Typ der Spalte string, dann verwenden Sie die Funktion serialize($array) zu konvertieren das array in einen string. Wenn Sie möchten, Holen Sie sich den string wieder in ein array, so verwenden Sie unserialize($string)
Ein paar Dinge zu denken:
Wenn es ein eins-zu-viele-Beziehung - sollte es nicht in einer Spalte suchen in mehreren Tabellen und ändern die Struktur der Datenbank.
Wenn Sie wirklich wollen, um ein array übergeben, müssen Sie es konvertieren zu einem string mit dem php eingebaute Funktion
implode
, dann mit der eingebauten Funktionexplode
zum abrufen der Spalte aus der dbhttp://php.net/function.implode