Bonjour tout le monde,
je souhaite inserer ce format json : ["ROLE_USER","ROLE_EDITOR","ROLE_ADMIN"] dans une colum de type json dans ma table mysql.
ma table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE roles(
id int NOT NULL AUTO_INCREMENT,
email varchar(60) NOT NULL,
roles  json NOT NULL
);
Dans mon html, j'ai utilisé des checkbox :
- user => value : ["ROLE_USER"]
- editor => value : ["ROLE_EDITOR"]
- admin => value :["ROLE_ADMIN"]

mon code php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
if(isset($_POST['roles'])) $roles = $_POST['roles'];
$mesRoles = '';
if (!empty($roles)) {
  foreach ($roles as $role) {
     $mesRoles .= '"' . $role . '"' . ',';
  }
}
$roles = '[' . trim($mesRoles, ',') . ']';
echo $roles;
resultat => ["ROLE_USER","ROLE_EDITOR","ROLE_ADMIN"]

Pour l'insertion j'ai le code erreur
code erreur :
Fatal error: Uncaught PDOException: SQLSTATE[22032]: <<Unknown error>>: 3140 Invalid JSON text: "Invalid value."
at position 0 in value for column 'users.roles'.
Nom : discorde1.JPG
Affichages : 460
Taille : 221,8 Ko

je veux ce resultat dans ma base:
Nom : roles_rows.JPG
Affichages : 434
Taille : 25,3 Ko
j'utilise
php vsersion: 7.4.26
mysql : 5.7.36
Wamp
apache 2.4.51