Pourquoi MySQL enregistre-t-il JSON dans l'ordre inverse ? comment le réparer
P粉141925181
P粉141925181 2024-02-17 13:04:55
0
1
377

C'est le code pour insérer json dans mon sql

function insert_ema($json){

$a= new Sql();
$b=$a->connection;
$sql = "INSERT INTO ema (ema_ten) VALUES ('$json')";

if ($b->query($sql) === TRUE) {
echo PHP_EOL." New record created successfully \n";
} else {
echo PHP_EOL." Error: " . $sql . "<br>" . $b->error;
}
$b->close();


;}

insert_ema('{"firstName":"John", "lastName":"Doe","3":"Jo", "4":"Do"}');

+----------------------------------------------------------------+----+
| ema_ten                                                        | id |
+----------------------------------------------------------------+----+
| {"3": "Jo", "4": "Do", "lastName": "Doe", "firstName": "John"} |  1 |
| {"3": "Jo", "4": "Do", "lastName": "Doe", "firstName": "John"} |  2 |
+----------------------------------------------------------------+----+

Le SQL enregistré ci-dessus est dans l'ordre inverse ! ! Comment puis-je le réparer

La raison pour laquelle je veux m'en tenir à l'ordre est que je veux pouvoir convertir le json en tableau et utiliser pop .

Je pense que MySQL devrait enregistrer le tableau et le trier pour ce problème.

P粉141925181
P粉141925181

répondre à tous(1)
P粉090087228

https://dev.mysql.com/doc/refman /8.0/en/json.html a dit :

Cela signifie que vous ne devez pas vous fier à un ordre de tri spécifique des clés dans l'objet JSON. Les tableaux JSON ont un ordre, mais pas les clés d'objet JSON.

Si les clés et les valeurs respectives d'un objet JSON sont les mêmes, elles sont égales quel que soit l'ordre :

mysql> select cast('{"firstName":"John", "lastName":"Doe","3":"Jo", "4":"Do"}' as json) 
  = cast('{"3": "Jo", "4": "Do", "lastName": "Doe", "firstName": "John"}' as json) 
  as is_equal;
+----------+
| is_equal |
+----------+
|        1 |
+----------+

Répondez à votre commentaire :

Le point de l'exemple ci-dessus est que vous ne pouvez pas faire en sorte que MySQL stocke les clés dans l'ordre souhaité. L'implémentation JSON de MySQL ne fait pas cela. Il réorganise les clés d'objet JSON pour améliorer l'efficacité de la recherche. Vous n’avez pas votre mot à dire.

Les tableaux JSON peuvent être triés. Ainsi, la seule option pour préserver l’ordre est d’utiliser un tableau, où chaque élément du tableau est un objet avec une seule clé :

[{"firstName":"John"}, {"lastName":"Doe"}, {"3":"Jo"}, {"4":"Do"}]

Je sais que ce n'est pas ce que vous demandez, mais ce que vous demandez n'est pas possible dans MySQL.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal