Purtroppo per vari motivi sono costretto ad usare mysql normale
Male .
Fai presente a chiunque ti abbia imposto questo vincolo che, se poi ci sono problemi di sicurezza, la responsabilità sarà sua
Se ti posto l’intero codice mi riesci a fare un esempio?
Certo!
Il mio problema è anche su come strutturare la quary di update [...]
Ho riguardato bene il codice che hai mostrato.
Sei sicuro che la tabella permessi debba essere strutturata in quel modo?
Da quanto hai scritto sembra ci siano 5 + n colonne, dove le prime 5 rappresentano
- client_name
- client_surname
- client_DNS
- client_domain
- client_port
e le restanti n i permessi.
A occhio questa tabella va normalizzata separando le informazioni sul client da quelle sui permessi, creando una tabella client:
Codice:
+----+------+---------+-----+--------+------+
| id | name | surname | DNS | domain | port |
+----+------+---------+-----+--------+------+
E la tabella permessi diventa quindi:
Codice:
+-----------+------------+------------+-----+------------+
| client_id | permesso_1 | permesso_2 | ... | permesso_n |
+-----------+------------+------------+-----+------------+
A questo punto è sufficiente che alla pagina PHP arrivino le informazioni:
- client_id
- lista di permessi da modificare
Il client_id è facile, lo mandi come parametro (o lo leggi dalla sessione, se disponibile). La lista è altrettanto semplice, puoi usare un vettore associativo (dando per scontato che non ci siano permessi con lo stesso nome):
Codice PHP:
$modifiche_permessi = [
'permesso_1' => 1,
'permesso_5' => 0,
'permesso_3' => 12
];
In questo modo puoi costruire l'interrogazione semplicemente con:
Codice PHP:
$query = "UPDATE permessi SET";
foreach ($modifiche_permessi as $nome => $valore) {
$query .= " $nome = $valore";
}
$query .= " WHERE client_id = $client_id";
Personalmente non userei una tabella con i permessi "cablati" sulle colonne, non è flessibile (qualora dovessi aggiungere o rimuove tipi di permessi dovresti alterare la tabella...), userei piuttosto una tabella fatta in questo modo:
Codice:
+-----------+-----------------+------------------+
| client_id | permission_name | permission_value |
+-----------+-----------------+------------------+
| 5 | permesso_1 | 1 |
| 5 | permesso_3 | 0 |
| 5 | permesso_4 | 1 |
| 42 | permesso_3 | 1 |
| ... | ... | ... |
+-----------+-----------------+------------------+
o una sua variante a seconda della natura dei permessi, ad esempio (se tutti i permessi sono binari), memorizzerei solo i nomi di permessi per cui il valore è uguale ad 1, assumendo che se un permesso non è presente abbia valore 0.