Das JSON-Feld ist eine Spalte, die JSON-Dokumente speichern kann. Um ein JSON-Feld zu aktualisieren, können wir die Funktion JSON_SET() verwenden, die Werte in einem JSON-Dokument einfügt oder aktualisiert.
Die Syntax von JSON_SET() ist wie folgt:
Code: Alles auswählen
JSON_SET(json_document, path, value[, path, value] ...)
- `json_document` ist das JSON-Dokument, das wir aktualisieren möchten.
- `path` ist der Pfad, an dem wir den Wert einfügen oder aktualisieren möchten. Der Pfad beginnt mit einem Dollarzeichen (`$`) und folgt der JSON-Pfadsyntax.
- `value` ist der Wert, den wir einfügen oder aktualisieren möchten. Er kann ein beliebiger gültiger JSON-Wert sein.
wir können mehrere Pfad/Wert-Paare angeben, wenn wir mehrere Werte aktualisieren möchten.
Zum Beispiel, wenn wir das JSON-Feld `dict` in der Tabelle `myjson` aktualisieren möchten, können wir folgenden SQL-Befehl verwenden:
Code: Alles auswählen
UPDATE myjson
SET dict = JSON_SET(dict, '$.variations', 'scheveningen')
WHERE id = 2;
Um diesen Befehl mit PHP auszuführen, können wir die Funktion mysqli_query() verwenden, die eine SQL-Anweisung an eine MySQL-Datenbank sendet. Wir müssen zuerst eine Verbindung zur Datenbank herstellen, indem wir die Funktion mysqli_connect() verwenden. Zum Beispiel:
Code: Alles auswählen
<?php
// Verbindung zur Datenbank herstellen
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myjson";
// Erstellen Sie die Verbindung
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Überprüfen Sie die Verbindung
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// SQL-Befehl vorbereiten
$sql = "UPDATE myjson
SET dict = JSON_SET(dict, '$.variations', 'scheveningen')
WHERE id = 2;";
// SQL-Befehl ausführen
if (mysqli_query($conn, $sql)) {
echo "JSON field updated successfully";
} else {
echo "Error updating JSON field: " . mysqli_error($conn);
}
// Verbindung schließen
mysqli_close($conn);
Für die, die beim MOD helfen möchten
Wie kann ich ein JSON-Feld in MySQL-Datenbank erstellen?
Um ein JSON-Feld in einer MySQL-Datenbank zu erstellen, müssen wir eine Spalte mit dem Datentyp JSON definieren. Zum Beispiel:
Code: Alles auswählen
CREATE TABLE person (
name JSON DEFAULT NULL
);
Code: Alles auswählen
INSERT INTO person (name) VALUES (' [\"Alice\", \"Bob\", \"Charlie\"]');
Code: Alles auswählen
INSERT INTO person (name) VALUES (JSON_ARRAY('Alice', 'Bob', 'Charlie'));
Beide Befehle fügen ein JSON-Array mit drei Namen in die Spalte `name` ein.
Wie kann ich ein JSON-Feld in PHP auslesen?
Um ein JSON-Feld in PHP auszulesen, müssen wir zuerst das JSON-Dokument aus der MySQL-Datenbank abfragen, indem wir die Funktion mysqli_query() verwenden. Zum Beispiel:
Code: Alles auswählen
<?php
// Verbindung zur Datenbank herstellen
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myjson";
// Erstellen Sie die Verbindung
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Überprüfen Sie die Verbindung
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// SQL-Befehl vorbereiten
$sql = "SELECT dict FROM myjson WHERE id = 2;";
// SQL-Befehl ausführen
$result = mysqli_query($conn, $sql);
// Verbindung schließen
mysqli_close($conn);
?>
Dieser Code fragt das JSON-Dokument in der Spalte `dict` aus der Tabelle `myjson` ab, wo die `id` gleich `2` ist. Das Ergebnis wird in der Variablen `$result` gespeichert.
Um das JSON-Dokument in ein PHP-Array oder -Objekt umzuwandeln, können wir die Funktion json_decode() verwenden. Zum Beispiel:
Code: Alles auswählen
<?php
// JSON-Dokument in ein PHP-Array umwandeln
$array = json_decode($result, true);
// JSON-Dokument in ein PHP-Objekt umwandeln
$object = json_decode($result);
Um auf die Werte im PHP-Array oder -Objekt zuzugreifen, können wir die üblichen Syntaxregeln verwenden. Zum Beispiel:
Code: Alles auswählen
<?php
// Auf den Wert unter dem Schlüssel 'variations' im Array zugreifen
echo $array['variations']; //scheveningen
// Auf den Wert unter dem Schlüssel 'variations' im Objekt zugreifen
echo $object->variations; //scheveningen
Kann ich auch verschachtelte JSON-Dokumente speichern?
Ja, wir können auch verschachtelte JSON-Dokumente in einer MySQL-Datenbank speichern. Ein verschachteltes JSON-Dokument ist ein JSON-Dokument, das andere JSON-Dokumente als Werte enthält. Zum Beispiel:
Code: Alles auswählen
{
"name": "Alice",
"address": {
"street": "Main Street",
"city": "Berlin",
"country": "Germany"
},
"hobbies": [
{
"name": "reading",
"books": ["Harry Potter", "The Lord of the Rings"]
},
{
"name": "cooking",
"recipes": ["pizza", "pasta"]
}
]
}
Code: Alles auswählen
CREATE TABLE person (
name JSON DEFAULT NULL,
address JSON DEFAULT NULL,
hobbies JSON DEFAULT NULL
);
Code: Alles auswählen
INSERT INTO person (name, address, hobbies) VALUES (
'"Alice"',
'{"street": "Main Street", "city": "Berlin", "country": "Germany"}',
'[{"name": "reading", "books": ["Harry Potter", "The Lord of the Rings"]}, {"name": "cooking", "recipes": ["pizza", "pasta"]}]'
);
Code: Alles auswählen
UPDATE person
SET address = JSON_SET(address, '$.city', 'Munich')
WHERE name = '"Alice"';
Code: Alles auswählen
SELECT JSON_EXTRACT(hobbies, '$[0].books[1]') AS favorite_book
FROM person
WHERE name = '"Alice"';
Code: Alles auswählen
SELECT JSON_EXTRACT(hobbies, '$[*].name') AS hobby_names
FROM person
WHERE name = '"Alice"';
Das MyOOS Projekt sucht Entwickler, die im TEAM an dem Projekt arbeiten. Der Weg zur Mitarbeit führt über die Lerngemeinschaft. viewtopic.php?t=4706
Beste Grüße
Ralf