Möchte assoziatives Array im Format ['key']['value'] in SQL-Tabelle speichern und wieder auslesen

GreenSprite

Benutzer
Beiträge
11
Hallo!

Ich habe noch ein kleines Problem mit einem assoziativen Array, welches ich in einer SQL-Tabellenspalte speichere.

Die gespeicherten Daten habe ich händisch in das Spaltenfeld geklopft, diese sehen so aus:

Code:
['customers']['rw'],['suppliers']['rwx'],['users']['r']

Ich hole mir per SQL-SELECT die Daten aus der Spalte und lade den kompletten String folgendermaßen in ein Array:

Code:
// Benutzerrechte ermitteln
    $result = doSqlQuery("SELECT userPermissions FROM boss.users WHERE id='" . $_SESSION['userID'] . "';");
    $row = mysqli_fetch_row($result);
    $permissions = $row[0];
    $arrPermissions = explode(",", $permissions);

Das Array sieht dann aber gefühlt "falsch" aus:

Code:
foreach ($arrPermissions AS $key=>$value) {
    echo "<br>" . $key . "=" . $value;
}
 
0=['customers']['rw']
1=['suppliers']['rwx']
2=['users']['r']

Es sollte aber so aussehen:

Code:
customers=rw
suppliers=rwx
users=r

Wo kann ich mit meiner Fehlersuche ansetzen?

LG!

Sprite.
 
Werbung:
Für mich schreit das nach JSON
Stimmt, haste Recht, hab das Format auf JSON umgebaut und nun sieht das Ganze folgendermaßen aus:

Gespeicherter String im Tabellenfeld:
Code:
{"invoices":"rwx","users":"r","suppliers":"rwx","automations":"r","packlists":"rwk","deliverynotes":"rw"}

Ausgelesen wird so:
Code:
$result = doSqlQuery("SELECT userPermissions FROM boss.users WHERE id='" . $_SESSION['userID'] . "';");
$row = mysqli_fetch_assoc($result);
$string = $row['userPermissions'];
$jsonObj = json_decode($string);

Ausgegeben wird so:
Code:
foreach ($jsonObj AS $key=>$value) {
    echo "<br>$key=$value";
}

Ausgabe:
Code:
invoices=rwx
users=r
suppliers=rwx
automations=r
packlists=rwk
deliverynotes=rw

Danke für die schnelle Hilfe
LG
Sprite
 
Jein.
Wenn Du nur solche Daten hast, keine oder wenig Relationen, keine oder wenig Struktur, keine Transaktionen brauchst...
Dann vielleicht mongodb.

Gemeint war der Datentyp der Spalte. Bei Text kannst du auch Gedicht dazu schreiben. Ein json spezifischer Datentyp böte direkt Validierung oder sogar Indizierung und viele json Operatoren für Objekte und Arrays.
 
Achsooo! Ok. Ich überlege gerade, ob MySQL vielleicht wirklich nicht die dauerhaft günstigste Lösung ist für mein Projekt. Am Ende gibt es Tabellen mit weit über 100.000 Datensätzen und auch verknüpfte Tabellen. Was ich aktuell aber noch in PHP realisiere und nicht direkt in der Datenbank (das joinen).

Möchte mich gerade in Mongo DB einarbeiten, weil ich überall gelesen habe, dass das Ding angeblich bei großen Datenmengen recht schnell sein soll.
 
Lass dich nicht verunsichern, MySQL / MariaDB ist schon die richtige Wahl.

Deine Tabellen scheinen auch auch nicht groß zu sein (100.000 Rows). Da ist alles super schnell wenn
du die richtigen Indexe nutzt und das Querie einigermaßen gut geschrieben ist.

Gruß

Bernd
 
Achsooo! Ok. Ich überlege gerade, ob MySQL vielleicht wirklich nicht die dauerhaft günstigste Lösung ist für mein Projekt. Am Ende gibt es Tabellen mit weit über 100.000 Datensätzen und auch verknüpfte Tabellen. Was ich aktuell aber noch in PHP realisiere und nicht direkt in der Datenbank (das joinen).

Möchte mich gerade in Mongo DB einarbeiten, weil ich überall gelesen habe, dass das Ding angeblich bei großen Datenmengen recht schnell sein soll.
Die Alternative fängt mit P an und endet auf ostgreSQL.
 
Werbung:
Zurück
Oben