Nella nostra applicazione corrente Ho un rapporto che contiene qualcosa come:Come posso memorizzare uno stato condizionale PHP nel database per un uso successivo?
if($foo == 3 || $bar > 3) {
$e = someFunction();
};
ma per un client diverso la stessa espressione potrebbe essere:
if($foo == 3 || $bar == 5 && $foobar != 9) {
$e = someFunction();
};
C'è un modo straight-forward per memorizzare il due espressioni diverse, solo i bit
$foo == 3 || $bar > 3 OR $foo == 3 || $bar == 5
nel database (MySQL) quindi non c'è bisogno di codificare tutte queste regole da parte del cliente o mantenere le versioni client dello stesso report. Sto cercando di capire se posso impostare una variabile o sostituire le condizioni. Qualcosa di simile:
$conditions = $row_rsConditions['condition_row'] //Get $foo == 3 || $bar > 3 from the DB and store it as $conditions
if($conditions) {
$e = someFunction();
};
Ci potrebbero essere> 100 diversi client e ogni client potrebbe/avrebbe un diverso insieme di espressioni. Non sono sicuro del giusto/miglior modo per farlo.
UPDATE:
credo di capire i problemi che utilizzano la funzione eval() di PHP. Ma a causa del numero di possibili combinazioni mi sto proponendo di usare il DB per memorizzare le condizioni (non sono sicuro di usare eval())
Fa alcuna differenza (più sicuro) se non c'è un'interfaccia utente che scrive nel campo delle condizioni/tabella? Potrebbe essere qualcosa che gestiamo da soli.
Che ne dici di salvare il codice nel database e successivamente caricarlo ed eseguirlo usando 'eval' ? Tu ci potrebbero essere problemi di sicurezza quando qualcuno inietta il database e ti fa valere il suo codice. – Nobody
Quindi, la domanda è: per quali circostanze, gli operatori all'interno delle condizioni possono cambiare? – Deele
Penso che sia un pessimo progetto archiviare la logica nel database, il database dovrebbe essere usato solo per i dati – Fivell