caro tutti.utilizzo di intval e real_escape_string durante la sanificazione degli interi
Sto usando interi PK in alcune tabelle del database mysql. Prima dell'input dallo script PHP, sto facendo un po 'di sanitizzazione, che include intval ($ id) e $ mysqli-> real_escape_string().
Le query sono abbastanza semplici
insert into `tblproducts`(`supplier_id`,`description`) values('$supplier_id','$description')
In questo esempio, $ descrizione passa attraverso real_escape_string(), mentre $ supplier_id solo essere intval() 'ed.
Sono curioso, se ci sono situazioni, quando devo applicare sia intval che real_escape_string all'intero sto inserendo in DB? Quindi, in pratica, devo davvero usare?
$supplier_id = intval($mysqli->real_escape_string($supplier_id));
Grazie.
Tutto questo sforzo estraneo con la sanificazione e l'assicurazione dei tipi di dati sarebbe ridondante se si utilizzassero dichiarazioni preparate. Molto più facile. – mario
Grazie per il tuo commento. Inizialmente le classi DB sono state sviluppate senza istruzioni di preparazione, pertanto ho bisogno di rifattorizzare le classi sottostanti e di non interrompere l'infrastruttura di lavoro allo stesso tempo. Quindi sto considerando di passare alle istruzioni di preparazione per i motivi che hai menzionato, ma non subito :) – paulus
Inoltre, le istruzioni di preparazione, per quanto ne so, sono molto utili quando si tratta di query di massa, che in genere non è il caso in la mia situazione. Quindi, in pratica, il passaggio a istruzioni di preparazione aumenterà (e sicuramente non diminuirà) la quantità di codice => quindi la leggibilità e le prestazioni ridotte sono sotto interrogazione. Secondo me, sarà più veloce fare intvals occasionali e stringhe di real_escape che preparare statement => bind => execute.A meno che non svilupperò una sorta di super-meta-db-class che si prenderà cura di tutte le query, che nel mio caso significherebbe riscrivere il codice da zero. – paulus